Yes there is, but to do it properly requires a jailbreak (legal, voids warranty) and a possible breaking of the Google Maps TOS.
The cache can be used to an extent: The Google Maps application uses its cache offline, so tiles are visible and the map can be panned a bit (if it was panned while online and could fetch neighboring tiles). Directions are retained in the list view even if you can't follow them all in map view.
If you want more than this, it isn't built in by default. If you jailbreak, you could hack it to have a much larger cache that supports hundreds of MB of content including zoom levels, etc.
Setting it up would be a significant hack and against the Google Maps TOS. When online, you'd need to sniff your own packets off the iPhone, detect those involving Google Maps, and build a cache. When offline, you'll want to redirect all requests to Google Maps servers to a local HTTP server running on the iPhone, and then serve the tiles.
I've seen this done with a computer that was frequently offline, but not with an iPhone, but it should work just fine. You can also add custom tile layers this way if you want.