Are there any generally accepted practices to get around this? Specifically, for user-submitted images uploaded to a web service. My application is running in Python.
Some hacked solutions that came to mind:

Display the uploaded image from a local directory until the S3 image is ready, then "hand it off" and update the database to reflect the change.
Display a "waiting" progress indicator as a background gif and the image will just appear when it's ready (w/ JavaScript)
I'd save time and not do anything.  The wait times are pretty fast.  
If you wanted to stall the end-user, you could just show a 'success' page without the image.  If the image isn't available, most regular users will just hit reload.
If you really felt like you had to... I'd probably go with a javascript solution like this:

have a 'timestamp uploaded' column in your data store
if the upload time is under 1 minute, instead of rendering an img=src tag... render some javascript that polls the s3 bucket in 15s intervals

Again, chances are most users will never experience this - and if they do, they won't really care.  The UX expectations of user generated content are pretty low ( just look at Facebook ); if this is an admin backend for an 'enterprise' service that would make workflow better, you may want to invest time on the 'optimal' solution.  For a public facing website though, i'd just forget about it.
What are some ways to work with Amazon S3 not offering read-after-write consistency in US Standard?