[eluser]Neovive[/eluser]
Although this may not work for every situation, if you have no specific need to store the actual file on your sever, you can host the file on Scribd via their very nice API. Uploaded files can be marked as private and linked a specific user on Scribd. Scribd allows you to upload Word, PDF, PPT, and many other document formats that would be very difficult to support on your own server if just validating with PHP.