We do this very thing over at SmartyStreets. Users upload files with potentially millions of addresses in them and we verify and standardize/de-duplicate them, etc. It's very processor-intensive, and even with the master data loaded onto a RAM drive, millions of addresses will take a few hours (by the way, that's super-fast for that amount...).
It may also be important to design a UI which can support dozens of jobs running in parallel. For example, our server nodes scale up and we can support many files at a time. Users will need an effective way to view the status and manage them. In 2011, we revamped our UI and this is what we came up with.
Here's a 30-second video showing how the whole process works, and how the interface responds to the current status of the job(s). If you want, you can try for yourself starting at this page (free, don't worry...).
Screenshots of the workflow... takes about 30 seconds to a few minutes, depending on your files.

Upload your list

See the file uploading

Map the fields (happens automatically; just confirm that the auto-map was correct)

Stay current with what's happening now
Notice that as the list begins processing, the user can go back and upload more, which lists will be handled in parallel, in real-time. Lists can be cancelled/deleted at any time, and when finished, they can be downloaded. A checkmark appears when the list has been downloaded at least once.
This is actually an aging design, which we're making plans to upgrade. It'll feel much more like a modern, responsive web app.
It's worth another note that we've changed the look of the account "dashboard" page many times and this design has initiated the fewest support calls/emails, and customers like having it all visible at-a-glance. First-time users tend to find they become comfortable with it pretty quickly.