I experienced this where the camera would follow a player, and would get stuck under terrain or objects. In order to fix this, I have the camera do a c_trace from it's position to the object position (say the player). If it detects any collision, it zooms in and does another c_trace to the player, if there is still a collision, it zooms in closer to the player once again until nothing is between the camera and player.
Is this what you are looking for?