I've written a little app that can automatically change the phone's settings according to your current location. It will use GPS if this is switched on, if not it will get a (less accurate) location from the cell network. Currently it supports the following settings:
Vibrate (on/off)
Ringtone
Ringer volume
Notification volume
WiFi (on/off)
WiFi (keep radio on)
WiFi (network SSID)
WiFi (static ip or DHCP)
Bluetooth (on/off)
Autosync (on/off)
It can also pop up notification alerts when you enter or leave a location.
The app is called "LocationBot" and can be found in the Android Market. There's also a free version called "LocationBotLite" which is limited to 2 saved locations (e.g. work and home), apart from this it is identical to the full version. The lite version is also available at this website:
http://zurloid.comuf.com/locationbot.html
Any feedback would be welcome.