NeatUpload is an ASP.NET component that performs http post uploads while displaying a progress bar. This seemingly simply task is actually hard to get right.
I used this once for a site that never launched. The entire site was written in PHP, but I made the upload page in ASP.NET simply because NeatUpload was the only tool I could find at the time to do the job. I exposed my PHP business layer via a web service, and let this one ASP.NET app handle the uploading of large files. The ASP.NET page actually ran on mono, which was not a problem since NeatUpload was originally a mono app.
If I had to upload files again in a PHP app I would probable give swfupload a try. However, NeatUpload is definitely my tool of choice for uploading