Well the idea behind a4j is to asynchronously issue xml get requests, and update the page without doing a page refresh.
file updload is, by definition, post-based. The whole form is submitted as a specially encode post, as per the http spec.
I'm running into this as well. The problem being, if you upload a large file, then it takes time for the upload to complete. It would be nice to be able to update a progress bar (or some other indication) so the user could see that it is indeed transferring the data.
Not sure if it will work but couldnt you insert this in there -
<a4j:status> <f:facet name="start"> <h:graphicImage value="/img/spinner.gif"/> </f:facet> </a4j:status>
... as far as i have seen that should then progress until it's complete.
Uploads are a tricky thing. One way to do them is to use an iframe for the upload, which can then update its parent frame. The other, better way is to use an applet.
The big advantages of an applet is it allows file browsing and previewing, and allows the upload to happen without needing to do a post, and doesn't require any type of multi-part submission (these are sometimes buggy).
I'm exploring both of these, and if I can get a suitable applet going I might create that as a JSF / Facelets tag and post it.
FYI: there are already a lot of upload applets out there
some R open-source: e.g. jupload, postlet
some R commercial ones: e.g. aurigma image uploader