I'm trying to find such an app, but I can't, which leads me to suspect that it's not possible, either because of software or hardware limitations. What I'd like to see is a list of cell towers that my phone can reach (both from my carrier and other carriers); signal strengths from each; perhaps an option to lock on to a specific tower or forbid the use of some tower. And, generally, the more data available, the better. So - have I just missed the right app; is there no such thing out there (and I'm free to write the first one); or is such data simply unavailable and I can just give up?
There is this app called Antennas. It can't do everything you have asked for. But it can show you the tower you are connected to, the signal level, and other towers from you carrier that your phone can see/connect to and their signal level.
Map the GSM/CDMA antennas in your neighborhood. This app monitors the GSM/CDMA cellular network connection; displays a map of approximate cellular antenna locations and their RF signal strength; and can log the data to a text or KML file.
Does not work on Verizon 3G & CDMA Support is limited by Android, not by the application CDMA requires Eclair Works best with 2G GSM. 3G/CDMA support is very limited.
Open Signal Map does some very similar stuff, its accuracy depends on how much data its got for your current area, but seems pretty good in built up areas.
I used it to help work out why I always had such a terrible signal at my parents house, turned out my phone kept connecting to a cell tower on the island you can just see from the end of their road, rather than the cell tower two roads down.