Diría que la respuesta práctica es no. Aunque teóricamente podrías hacer una aplicación/script que cambie a 2g antes de una llamada, el script tendría que esperar unos segundos antes de realizar la llamada mientras el teléfono cambia de señal. Esto hará que no sea más rápido que cambiarlo manualmente antes de llamar.
Te sugiero que coloques el widget 2g/3g cerca de tu marcador y lo presiones antes de entrar al marcador, para cuando elijas un contacto el teléfono debería estar listo para llamar.
Otra opción tiene que ver con rootear y anular tu garantía: flashear diferentes módems (imágenes de radio) de xda. Algunos módems se aferran a las señales de manera más agresiva (pero consumen más batería).
La última y más obvia opción (la que yo elegiría en tu lugar) es simplemente permanecer en modo 2g cuando estés en la ciudad. Dado que la señal es tan mala que se cortan las llamadas, supongo que la velocidad de datos también es lenta y se corta. También ganarás en duración de la batería porque el teléfono no estará buscando y perdiendo constantemente señales.
En cualquier caso, consideraría cambiar de operador si hay una mejor opción donde vives.