Hosting only depends on how much you want to pay for it, you use Amazon S3 which is widely used for image cdns, You can pick any VPS which offers backups (Linode, Rackspace etc), alternativelly you can use DropBox to host you image and them retrieve trhough API (web2py supports it).
My recommendations are: 1. If going with default, set *uploadseparate=True* or you end with a lot of files in the same folder and it is hard to O.S to find files. 2. Set the length for every upload field to 128 (or you end with large filename issue) 3. For serving use a cache system (sencha.io works good) 4. Set the right response headers for better caching of you serving images 5. If you need to create thumbnails using PIL, do it in a queue (scheduler or cron), for large images you will have problems trying to computate the thumbs at runtime (thumbor is a good option if you can run a dedicated server for this) 6. Store original filename in a separated field (there is a tutorial in the book) --

