I pretty much do exactly what you describe (pricetack.com). The one main difference is that I use Fabric to script my deployment activities. I highly recommend checking out Fabric if you are planning to develop web apps. It's pretty easy to get started and use.
I have Fabric scripts that build cloud servers (I use Rackspace). I use Bitbucket as a primary repository. I develop on two different Macs (home/office) so I "hg push/pull/commit/update" each time I change Macs. I use built-in web server and SQLite on the Macs. I use Nginx + uWSGi and Postgres in production. The one main difference from what you describe is that I have a 0.py model that I have Fabric switch in production to a version with production settings. Developing with SQLite is getting harder because I'm starting to use some Postgres-specific features like text search. I'm not quite sure what I'm going to do. My basic deploy script does something like this: hg pull web2py; hg update [version] hg pull myproject; hg update [version] mv prod_0.py 0.py And various other stuff. The key is to start simple and grow.