Looking for an iPhone app or script that turns off “Cellular Data” when on 2G and then BACK ON when on 3G
A left field suggestion:  

Turn off cellular data and use a Mifi device (such as the Huawei E585) for your internet connection.
Yes this does mean another device and another SIM card, but you may be OK with that.  

I've used this combination with an iPhone and it works really well.
You can leave the Mifi in your pocket, so forget it's even there
(just remember to charge it!).
You get other benefits, for example it means using a laptop or tablet "in the field" is possible also as they'll be net-connected.