This is not supported by the Mach-O format, which is used by Mac OS X. The format allows binaries for different architectures. There is a subtype field, but there are only values defined for different generations of processors, not their abilities.
There are a couple of ways to work around this. One would be to have both SSE4.2 and code for older processors built into the same binary, using different function names. Your code would determine whether or not SSE4.2 is supported, then call the proper function.
Another option would be to build two libraries, one with SSE4.2 and one without, and ship both of them in your application bundle, but not link to them. When it is first loaded, your code would determine whether or not SSE4.2 is supported and then load the right library.
Using the first method, you don't have to worry about loading a library and connecting all of the functions, but you will always load extra code which does not get executed, and you will have to check a variable before each of those function calls. Using the second method, you can simply call the functions without checking anything every time, but loading the library and connecting all of the functions is more work than simply comparing a variable each time.