Hey there,
I found your post while I was searching the web with the same issue.
I found the solution to my problem, which I believe is the same as yours.
Have a look at this link:
I actually hide the input|type=file element, replacing it with another button. Then when the user choose the file, I simply show the file name with a "Remove" button. Clicking on remove just removes it, and allows the user to choose another one.
I then had the same problem: while starting the upload with a "start" button, two files came at the same time, and this is because my Start button is bound to a click event that sends the data via data.submit().
Adding a file binds the button once. Change it and adding another one binds the button another time, so when you click the button data.submit() is called twice.
Basically, when I click the "Remove" button, I also unbind the "Start" button with the click event, and thus the data.submit() form.
That saved half of my day and I kept my hair ;).
Good luck with that!
Sylvain