While my answer isn't exactly what you're looking for, it's the best I know of.
In Visual Studio 2005 it may be possible to use the outlining tool to collapse the unused part of an #ifdef block.
Another idea that comes to mind is breaking off OS specific code into their own files, and using a master file containing the #ifdef blocks and significant parts (i.e. complete declarations) of code that don't change across platforms.
Yet another thing that comes to mind is simply grouping the code for conditional blocks where ever possible. There are many situations in which code order might not matter as much, and you could group that code together.
The other thing that could be done if you only wanted to use the file as reference material is to run the file through a preprocessor that only processes conditional blocks and ignores anything not required to process the conditional blocks.