Screenshots would be appreciated - I love checking out what other people have done

.
You already have a camera class right? Since this is an FPS game I'm assuming that the only thing that changes is the View matrix (for moving the character). Hopefully you've stored the angle that the world camera rotates by. The world camera can turn in the X and Y directions.
The gun needs to rotate in the X and Y directions as well. To rotate it left/right (X direction) you'd rotate it about the Y axis. To rotate it up/down, you'd rotate it about the X axis.
Just do a dxDevice.Transform.World = Matrix.Multiply(Matrix.RotationY(angleX), Matrix.RotationX(angleY))
Either that, or you switch around the first and second arguments. Should do the trick.
Take care,
-The Pentium Guy