I think you'd override the MultopartDecoder service by extending MultipartDecoderImpl and implementing a custom createFileUpload(). You could then call ServletFileUpload.setProgressListener(...) with a custom listener.
The progress listener could store the bytes/percentage finished in a session attribute the. You'd then have to start a clientside poll which continues until 100%. Sounds like a fun task, let me know if you have any success.