using defines makes it easier for me inside the application code
Why would it make it easier from the application? You still have two shader binaries, like Hodgman said. The only thing you could do, is either writing your own library that hides "global synchronizations of the pipeline" or you use the Effect framework. A single shader can't do that.
Technically speaking, you could write a compute shader that was able to calculate the occlusion and then filter it all in one pass. It would be horribly inefficient
I think an efficient implementation might actually be faster. Simply cache the depth values and the resulting ambient occlusion values in groupshared memory. If you manage to do the necessary calculations on a single Warp, you can synchronize the threads and in that way implement the AO calculation, the horizontal blur and the vertical blur in a single shader. And since the whole process only requires one actual read and write to the VRAM, it should be way faster than a pixel shader implementation with 3 passes.