Is there a way to use Google location service without tracking my positions constantly in background? I want to use Google location service based on wifi or cell tower data without gathering and sending my (later anonymized) positions to Google in background when I do not explicitly make the requests. When I decline to send my location information for  in "settings - location", the location service is disabled. 

I suppose this would be possible on a rooted phone only.
If your device is rooted, there is a solution available to you:

Location Cache can not only show you what currently is contained in your location cache, it can also delete cached locations, and even "lock" it -- i.e. it kinda "write protects" the location cache, so no new entries can be written into. Effects are multiple:


no data cached means slower location, as the last position is no longer available
as uploading your "latest locations" is handled "bulk-wise" from the cache, it also means: no data in cache -- no bulk-upload to Google's servers -- privacy protected.


I just remember: In Android 2.1 and earlier, we were able to activate "network based locations" and still keep our privacy by unchecking the "share with Google" checkbox. If you try this with Android 2.2+, unchecking that second box automatically unchecks "use network-based locations" as well. So it is technically possible (and even was implemented this way) to respect our privacy -- but intentionally disabled. Don't think evil...

Remark: Location Cache does no longer work from ICS up, it seems -- according to the description on the playstore :( If I can see any alternative, I will update this answer. Meanwhile, it at least provides help to those with Froyo and Gingerbread... As I read in the description of Android Location Cache Viewer, this might be due to the fact the locations are no longer stored on the device (at least not in the same place; so either the place has changed, or transmission to Google's server takes place immediately -- which would also mean the "last location" would no longer be present locally, which I doubt).

Those of you who cannot stop Google getting those data, but still want to protect their privacy, could make use of location spoofers (e.g. Location Spoofer or CatchMeIfUCan) to at least cause some confusion to potential abusers :)