I believe the simulators have another use entirely.
In Java, I'd do the usual code partitioning so that the actual device-dependent stuff was separate from the application code and simply use
JUnit to test it.
Testing the actual GPS code itself is harder - you really need something that can act as a backend to the JSR API, but since the API is fairly staightforward, mostly you'd just want that to get comfortable with the concept.
I think there may actually be a JSR GPS simulator in the Sun J2ME SDK. Also, a lot of the phone service providers allow developer remote access to a lab with live devices in them. Although commonly the GPS interaction is fairly limited, since they don't move around - just stay in the building.
The secret of how to be miserable is to constantly expect things are going to happen the way that they are "supposed" to happen.
You can have faith, which carries the understanding that you may be disappointed. Then there's being a willfully-blind idiot, which virtually guarantees it.