The only app I've found to do this is a paid app from the Google Play called Tasker. Tasker does so much more though, well a little less with each new version of Android, but it still has some pretty nice functions. To do what you are looking for it you would need to make a profile in the Tasker app, there are examples of these that you can directly download or use as templates at
tasker.wikidot.com. The way I do what you are looking for is I use the rough location provided by the network to figure out when I'm with 600 meters of my home. Once the device knows you are near a location it will turn on my WiFi which then will connect automatically. I use 600 meters because without GPS (a fine location tool) the rough location provided by the network isn't very accurate. I could probably go down to 300 meters but if I'm within 600 I'm home or on my way. With Tasker you can also turn it on by time, day, or time and day, or when you start up a particular app. For example you only want WiFi on after 3pm, cause that's when you typically arrive home, and turn off at 5am, cause that's when you leave. Or if you use it at work you can set a Time and Location so if both match your WiFi will be enabled. You could add M-F to that cause you don't work the weekends. The combinations are pretty extensive but for one last example, if you only need WiFi when you access the internet or email you can tell Tasker to turn it on when you open your browser and have it turn it off when you close it. Along with that you can mix in any of the other conditions I've mentioned.
Tasker will also random change your ring tones, or automatically open your favorite listening app when you plug headphones in to your device. It can give you the weather every morning at a time you set, or send emails or texts to people as you drive or if you miss a call. I once used it to automatically forward texts from Verizon to my wife's phone cause she handled the account. What it will no longer do is turn on GPS, we lost that with GB, nor will it turn on Airplane Mode, we lost that with ICS.