Some other resources that may help you:
* If you're targeting C++11 then you can reasonably rely on std::isfinite and friends.
This is how I implemented the first draft version. The idea was to have something better for natives and fallback to this implementation when using multi precision or other floating-point implementation.
* If as suggested you want to try bit-fiddling to get the status of an FP value, then that code is already in Boost.Math (see fpclassify.hpp and includes thereof) and you can steal as required ;-) Obviously any software solution will be *much* slower than getting the hardware to raise an exception for you.
Good to know.
You should be able to implement all of the SSE operations you need using intrinsics, which are well-supported on all recent x86 compilers.
I never worked with intrinsics. They look cool, I will give them a read and see what I can use.