У gmail это сделано так:
<input size="50" name="f_eqvtseyd" onchange="top.js._CM_OnAttach(window,this)" type="file">
ну а в скрипте ихнем сам разбирайся

там черт ногу сломит
Хотя судя по поведению ф-ция запускает аплоад файла только через некоторое время ~10 секунд (если больше никаких изменений в поле не было) -- защита от ручного ввода