[eluser]pistolPete[/eluser]
I can think of two different implementations:
1) AJAX based:
Validate the input fields using AJAX, let the user only submit the form if all fields are valid =>files are uploaded only once
2) "Cache" the uploaded files:
Upload the files, validate the input fields. If there are validations errors, save the filenames of the uploaded files either into a database table or the session user data; you could also use a hidden input field.
If validation is passed, fetch the filenames again.
Problem: You need to implement a garbage collection, if a user does upload files but does not complete the form; you could extend the session library, which already has a garbage collection, and let it delete those unused files.