Je dirais que la réponse pratique est non. Bien que vous puissiez théoriquement faire une application/script qui passerait en 2g avant un appel, le script devrait attendre quelques secondes avant de passer un appel pendant que le téléphone change de signal. Cela ne sera pas plus rapide que de le changer manuellement avant d'appeler.
Je vous suggère de mettre le widget 2g/3g près de votre composeur et d'appuyer dessus avant d'entrer dans le composeur, au moment où vous choisissez un contact, le téléphone devrait être prêt à appeler.
Une autre option n'a rien à voir avec le rooting et l'annulation de votre garantie : flasher différents modems (images radio) à partir de xda. Certains modems retiennent les signaux de manière beaucoup plus agressive (mais utilisent plus de batterie).
La dernière option, la plus évidente (celle que je choisirais à votre place), est de rester en mode 2g en ville. Puisque le signal est si mauvais que vous perdez vos appels, je suppose que les vitesses de données sont lentes et diminuent également. Vous gagnerez également en autonomie de batterie, car le téléphone ne sera pas constamment en train de chercher et de perdre des signaux.
Dans tous les cas, j'envisagerais de changer d'opérateur s'il existe une meilleure option là où vous vivez.