OH OH OH! I get what you're saying.
In your step 2, you're rendering the light geometry, not shadow-specific geometry
Quote:"2. Render the shadow casting light (using light geometry: sphere, cone, etc) to scene and use shadow map from #1 to calculate occlusion."
Yes, now I see, you project the gBuffer onto the cone, calculate light and then mix that with a "shadowing" texture that had been forward rendered. What I'm trying to convey is that the shadow map has a g-buffer of it's own in the form of the "shadowCoordinate" texture, which does not end up looking black and white, but more rainbow colored like a normal or position buffer. This way the lighting and the shadowing coud be drawn on the exact same piece of geometry (and in the same pass I guess if you really wanted to, but that would make for some shader bloat).