I was looking through a bunch of old code and came across some utilities in C# that handle loading the Quake MAP file format. There are several classes in this bunch:
The second step is necessary because the results of the first step is basically a list of planes that when clipped against each other create the actual geometry of the world. The second step is responsible for doing this clipping as well as a few other things. From this point it wouldn't take much to throw the resulting triangles into a VertexBuffer and use it for rendering.
If there is interest in this code I can spend a little time cleaning it up then posting it. Let me know!