I've got a smartphone which can cache maps locally (it's a Nokia N900, but lots of other ones do that too, with a few notable exceptions...).
Before I go somewhere, on wifiWi-Fi I browse around the area I'll be visiting, so the phone downloads all the maps. When I'm there, I can then navigate around without needing to download anything, just using the cached maps and the GPS. I can also browse around the surrounding area too, which is handy for planning and orientation.
Also has the bonus of using a gadget I already carry with me, so I'm less likely to forget it!