How can I make Google Maps cache the map for my entire city?
Since you asked this question, Google has added a "pre-cache map area" feature to Google Maps's experimental Labs features. You first have to go into Settings > Labs and enable "Pre-cache Map Area", then visit a place page (either by clicking on a POI or long-pressing somewhere on the map), look at the list of "More Options", and click "Pre-cache Map Area". It will cache the area within 10 miles of the point and keep it cached for 30 days. Depending on the size of your city, you might have to cache a few different points to get the coverage you want.

Here's more from the Google blog:
http://googleblog.blogspot.com/2011/07/download-map-area-added-to-labs-in.html