OSM Map On Garmin/Format
Garmin uses an undocumented file format for its map files. The format has been partially reverse engineered, but there are still some unknowns.
Common file types used on Garmin devices and for MapSource
gmapsupp.img
— the container file for maps inside /garmin folder on GPS internal memory or memory card. When sending maps with Mapsource, all new maps are put into gmapsupp.img. Old maps previously in gmapsupp.img will be deleted..img
— Garmin map files.tdb
— needed for MapSource and Qlandkarte GT. Tells things about the maps, like an index. Not needed for GPS.TYP
— needed to customize the appearance of objects. Needed for GPS and MapSource/Qlandkarte to have much better looking maps.
Storage on Garmin devices
Newer Garmin GPS devices support mass storage mode, where the device pretends to be a normal storage device like a USB stick. Here are more details.
File format documentation and libraries
To understand the Garmin map file format the best place to start is the Sourceforge project garmin-img.
Mkgmap comes with some code for disassembling and viewing Garmin maps: http://svn.parabola.me.uk/display; there's information on the mostly-understood routing network at http://svn.parabola.me.uk/display/trunk/doc/nod.txt.
Libgarmin also contains more info on the format -- its aim is to read Garmin maps for routing in Navit. The libgarmin wiki contains some more information on the format.
jgarminimg let you read garmin img files into java and display maps as a swing component.