Le javascript ne permettra pas de connaitre l'état d'avancement de l'upload. Il faudra faire des requètes périodiques au serveur. Autrement un truc bien lourdingue à gérer. J'ai eu le même problème, en fait lorsqu'on cliquait sur "Upload", j'ai grisé le bouton, et affiché un petit gif animé pour dire que ça travaille. Ça a permis de limiter un peu la casse.
Au bout d'un moment j'en avais marre de l'ergonomie pourrie pour uploader depuis une page web, j'ai rajouté une applet java. Mais java en applet, c'était tout aussi pourri (certaines version du JRE faisait tout foirer, extrêmement chiant à débugger). J'avais aussi vu des trucs en Flash, ça aurait certainement été moins pourri.
Bref au final, j'ai fait une application stand alone Win32/OS X. Depuis plus (trop) de problème.