The iPhone location *is* done using skyhook.
They *do* drive round places, at least to create an initial database. They’re selling their software to Apple, Google etc. They can afford a few vans with laptops in.
They can also take user updates – although I don’t think the iPhone app does this – I think in apps that do, it asks you if you’re cool with it before updating, and there is a verification process before it goes back into the database.
http://www.skyhookwireless.com/whoweare/privacypolicy.php
If you’re a developer, you can get the skyhook SDK, and play with it to see what is in their database.
http://www.skyhookwireless.com/developers/
Also, I can’t remember exactly how they do it, but I have a feeling it works by looking at all available wifi networks, not just the one you’re connected on – so if you’re playing with stuff, make sure you turn off your normal home access points.
Joe
(who has some vague idea of how this kind of thing works due to working in a lab full of people doing location based thingies, we actually had some contact with the skyhook people at some point before they got into the Apple deal and stuff)