As someone else suggested, Jquery has the plugin you need.
A simple iframe will do the trick, and you'll need APC for the progress bar.
This is an 'heavy-tested' solution, for example the cms Drupal use it (dont know if with jquery, but im sure about the iframe and APC).
Some tutorial:
Creating an Upload Progress Bar in PHP with APC
Creating an Upload Progress Bar in PHP with APC: js/Ajax part in page 4
Upload con progress bar per APC + jQuery (italian language)
Upload progress bar with PHP5, APC and jQuery
HOWTO: PHP and jQuery upload progress bar
Asynchronous file upload with AJAX progress bar in PHP
Zend Framework: Documentation (Chapter 21.1.5. Progress for file uploads)
EDIT:
I wont post the code becose is useless; just follow one of the tutorial i've posted (the first one, for example) and you'll find all the code you need with a full explanation of waht the cose do (that is more important than the code itself, imho).
[OT]
Stop this stupid down/up votes war. We are not here to win stupid reputation, but to help each other in programming skill, right?
I didnt downvote all whom suggested flash solution, just the andrew answer becose was kindly uncorrect and not a usefull analysis of the swf 'issue'.
The point is not that i dont like flash, but that flash is good (indispensable) for other kind of issues (video, music, etc..) but NOT a reliable solution for handling file uploads, things that can be easly done by Javascript and php itself (with APC, if you cant use APC on your server, then go with 'flash solution').
With swf object, you just have to hope that the 'api' to handle it fulfill all you needs, else.. do they give you the source (.fla) file? do you have a license of adobe flash, and the knowledges to edit it? Are you ready to do taht everytime your fancy upload need even the simplier modification? You agree with me that find help for js or php is easyest than finding help for flash?
Thats why i don like the flash solution for this kind of issues.
Then, feel free to keep you downvote on me, im here to learn not to gain silly rep point.
[/OT]