The iPhone 3G has 3 levels of location services. The first is WiFi router mapping from SkyHook. You need to be WiFi for this to work, and in an area where SkyHook drove through, recording the GPS coordinates for all the routers.
Level 2 is Google cell tower mapping. You need to be on the cell network for this, and I believe you need data to be on to transfer the information.
Level 3 is A-GPS (assisted GPS), which uses the cell towers to pre-crunch GPS data to speed up location determination. Again, data is needed for this.
Turning off data-roaming and turning on WiFi might give some measure of location, but I think anything GPS related is out without data.