Hi David,
I believe the issue you are seeing is due to the ASP.NET File Upload control (what the Kentico Upload File web part is based on). This .NET control is notoriously very picky about how it functions and when a postback occurs, it will almost always empty itself (even if an error happens). In the past, I have gotten around this issue by Using client-side JS to validate a form before posting back. You may need to add a custom form layout (or even a custom web part) to implement it, but that should hopefully give you a workaround.