Although my answer is not quite what you are looking for, it is the best I know.
In Visual Studio 2005, it may be possible to use the selection tool to collapse the unused portion of the #ifdef block.
Another idea that comes to mind is to split the code of a particular OS into its own files and use the main file containing #ifdef blocks and significant parts (i.e. full declarations) of code that do not change on different platforms.
Another thing that comes to mind is simply to group code for conditional blocks where possible. There are many situations where the order of the code may not matter much, and you can group this code together.
Another thing that could be done if you would like to use this file as reference material is to run the file through a preprocessor that processes only conditional blocks and ignores everything that is not required to process conditional blocks.
source share