Is there a widget to toggle 2G and 3G?

Additionally, is there a messaging app that works with the 3G turned off, or do all of them rely on that?

I have Juice Defender Ultimate so it turns off 3G when the screen is off. There is a setting to wake every so often to check for data, but for some reason it isn't working for me.