Browsers will not allow file upload fields to be restored automatically as a security measure. To prevent losing the file from validation, either perform all validation on the client side (though you should always validate again on the server) so the form is never submitted until everything is correct or you have to grab the file(s) that are submitted the first time and hold on to them until the form finally comes through with all validation completed.
In this second case you have a couple options:
Save the contents somewhere and return a unique ID pointer to be held in a hidden field when you return the form. You should also consider putting a visible label that shows what file has already been uploaded. You will have to clean up uploads periodically from users who give up and come back later (and thus won't be submitting a form with that correlation ID for you to match up the upload).
Base64 encode the contents of the uploaded file and return that to the view in a hidden field. This is more bandwidth intensive but it doesn't require you to store a file on your server that may never be correlated to a proper form. You might also be able to display that same image in the returned view since I believe you can specify a Base64 encoded image as the source for an image tag (or maybe CSS attribute). This might be browser specific.
As long as your file uploads are limited in size (100kb for instance) option 2 is my favored approach. It's not much bigger than all the modern JavaScript libraries that are included in a page and is a better experience for the user while leaving your server dumb of sessions, cleanup or excessive processing.
Edit: Many sites that allow uploading of images also provide validation on file size and kick it back if it's oversized. In this case the user has feedback that their asset has not been stored and you're free from having to encode and return it.
Edit 2:
Here's a post about browsers marking the file upload control value field as read-only and preventing this from being modified by JavaScript (it can only be modified by direct user action).
And here's a SO comment about using Base64 encoded image in HTML directly. The question asker is looking for a way to put the data in a separate file but this isn't what you want. The 'this works' portion is what I was referring to in Option 2 above.