Complete working example of a script which handles both uploads and the form. Backend is completely unobtrusive, try disabling the javascript.
Notes:
We use the default submit and reset buttons which where present in the form!
Communication is done using SESSIONS
In case Javascript (and/or) Flash is disabled, this form works like a normal HTML form:
Files are uploaded to the server
The backend script processed form validation
In case there are form validation errors, the user has to reselect the files and try again
In case Javascript (and/or) Flash are NOT disabled, this form works like this:
First, the form is validated using AJAX.
Second,the uploads are processed.
Third, the form is submitted.
Basicly you could also switch action 2 and 3, meaning first submit the form (using AJAX) and then process the uploads, but that is upto you. It is merely a matter of how you save the data in the session and code your backend.