Sorry, I meant PSSM, not PSM. PSM/TSM and similar algorithms have a lot of temporal aliasing when camera moves. IMHO "normal" shadows look much better.
Yes, it's possible to implement SDSM on SM3.0. Just calculate depth range on GPU using pixel shaders and then read it on CPU. For read back use a few textures in round-robin fashion, so GPU won't be stalled by CPU. Results will be lagged by a frame or two, but it should look ok.
Yes, you are on the right track. If you want to use normal maps, then you need to sample in pixel shader. You can find code for evaluating irradiance using given normal in the DXSDK samples (Samples\C++\Direct3D\IrradianceVolume/SHIrradianceEnvMap.fx).
Depth should be also interpolated using perspective correction. Without it there will be some z-buffer artifacts in places where two triangles intersect / overlap. More or less visible, depending on triangle position and size.
BTW persp corr interpolation just for zbuffer is simple - just linearly interpolate 1/z in screen space.