You'll want to read up on the Google Maps Geocoding API:
http://code.google.com/apis/maps/documentation/geocoding/
If you're on Android, there's a special Geocoder class that will call Google Maps for you:
Geocoder geocoder = new Geocoder(this, Locale.getDefault());
List<Address> addresses = geocoder.getFromLocation(lat, lng, 1);
(Source: Android: Reverse geocoding - getFromLocation)
The catch is that this just going to give the most likely address for the user's current location -- you don't get to specify a fuzz factor or anything like that. Even then, 10-20 ft. should be close enough for this to match.
If this doesn't get you the data you need, you might also want to look at OpenStreetMap, which is an open maps database. I don't have much experience with it myself, but there's documentation here: http://wiki.openstreetmap.org/wiki/Main_Page