This: http://msdn.microsoft.com/en-us/library/windows/desktop/bb205342(v=vs.85).aspx contains a description of the algorithm. Note that the matrix is identical to a object-to-world space transform that has been inverted.
The gist of the algorithm is to compute the local x, y and z axis of the camera in world space and then drop them into a matrix such the camera is placed at the origin. Transforms containing rotations and translations only are constructed as follows:
| ux uy uz 0 |
| vx vy vz 0 |
| nx ny nz 0 |
| tx ty tz 1 |
// x-axis of basis (ux, uy, uz)
// y-axix of basis (vx, vy, vz)
// z-axis of basis (nx, ny, nz)
// origin of basis (tx, ty, tz)
That's a simple world transform; you are building a view matrix so you actually want the inverse which is computed as follows:
| ux vx nx 0 |
| uy vy ny 0 |
| uz vz nz 0 |
| -(t dot u) -(t dot v) -(t dot n) 1 |
// u = (ux, uy, uz)
// v = (vx, vy, vz)
// n = (nx, ny, nz)
// t = (tx, ty, tz)