La soluzione migliore a mio avviso sarebbe avere degli input (magari come suggerito con la possibilità di aggiungerne altri via JS) dove l'utente sceglie i files. Quando l'utente ha scelto il file tu cominci ad uploadarlo in background via AJAX. Se l'utente non ha JS abilitato, invece, fai l'upload tutto insieme quando preme submit.

Insomma, il sistema che usa GMail.