BGE: How do I setup camera collision?
This can be done with a  very simple script. I've been using it out of a question asked earlier, but I can't find it anymore, so kudos for whoever made it. 
Essentially, this script uses a ray of variable length and moves the camera to the position that the ray hits at. Your going to need to add an empty that points toward the place you want the camera to be, and then put your mouse-look logic on the empty, not the player (at least for the up/down axis)

from bge import logic

def collision(cont):

    own = cont.owner
    scene = logic.getCurrentScene()
    replace = scene.objects['ReplaceEmpty']
    target = scene.objects['Camera.001']
    ray = cont.sensors['Ray']

if ray.positive:
    target.worldPosition = ray.hitPosition


also, (I'm not a code monkey) you'd probably need something on the end like 

else:
    target.worldPosition = replace.worldPosition


then, simple rig that up to a TLT always sensors, and Viola! cam-collision!