just so you know, you don't have to do a lot of crazy vector rotations on arbitrary planes to get the camera rotation effect in opengl! glulookat makes life *so* difficult! you can code something in your own matrix structure in c and generate your own 4x4 matrix utilizing the pitch and yaw (or roll too if you need), and replace the opengl modelview matrix with that specialized matrix before you do any rendering.
just remember that you must plug in the *negative* angles and negative xyz displacement (because technically the camera must stay in same position, and hte world is rotated and moved backwards to get the same effect).
Here is some code from a computer game engine that achieves this functionality with the built in opengl commands. you do this before rendering the world:
and another thing, i think altering the near plane distance achieves the same effect...this is because opengl takes the viewing frustum, and alters it into a cube (such that all objects inside the frustum are transformed so that closer objects must be made bigger to stay in the relative size to the frustum, and far objects in the distance (where the frustum is fatter) must be made smaller, this is what scales objects in 3d) . i have not tried this, and altering the fov as was mentioned is more intuitive.
//dont clear color buffer bit this is not needed and slows
//things down, will not produce the half life 'mirror' effect unless
//you are a) outside of the world or b) dont have at least a skybox to render
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
CQUAKE3ShaderManager->DumpShaderstoColorBuffer(); //fancy terms for rendering the world :)