Are you creating just one 2gb .img file? Or does the map consist of multiple tiles? I have found cgpsmapper, and the gps itself, is happier with much smaller .img files. I use the standard USGS 24k quads as my tile size, and that usually results in .img files in the range 1 to 2mb each. There about 280 of these in my old map of NJ, which is about 9,000 square miles - similar to NH. The total mapset is less than 200MB. And this is an old version with very complex contours at 5 ft intervals in Southern NJ from 1/9 arc second LIDAR DEM. The mapset also contains landcover data for the entire state.
This map is rather sluggish on the GPS, and a new, optimized version using 1/3 arc second countours is less than 100mb. So 2gb sounds like a pretty large file for a state about the same size as NJ. And if this is just one big file, I'm not surprised that cgpsmapper isn't happy.

You probably need to re-sample the contours so that the lines are less complex. This is trivial in globalmapper, but I don't know how to do it in Qgis.