I just checked this with my VPN in http://html5demos.com/geo
Although I VPN through Germany, it still shows my nearby location in London.
If you read https://www.mozilla.org/en-US/firefox/geolocation/ , you will see:
If you consent, Firefox gathers information about nearby wireless
access points and your computer’s IP address Then Firefox sends this
information to the default geolocation service provider, Google
Location Services, to get an estimate of your location.
As @Aria noted, Google Location Services uses their collection of WiFi AP to try to pin-point your location. I assume they have a global list of AP SSIDs through the Google Street View project as well as their Android devices.
edit:
FYI, here is the captured request that is being sent to Google. A full list of nearby APs. You might want to launch a proxy and check for yourself.
Also the fact that you are on a computer without WiFi doesn't mean that nearby APs aren't stored somewhere within your computer (Cache, Registry, Logged in Google/Firefox profiles, etc)