Mipmapping the Z-buffer? Interesting. I've managed to find the GLSL source code for the SAO paper and identified the relevant parts. What I'd need to do is add mipmaps to the depth buffer, compute a few mipmap levels and finally modify my shader to pick a good mipmap level for each sample.
Looking at the source code of their example, it seems to be pretty inefficient. With both set to 16 samples, my SSAO is only 107 instructions while theirs is 351. Most of this seems to stem from the fact that they are calculating sample positions from scratch using sin() and cos(). In addition, they're sampling the resolution of each mipmap using textureSize() which seems to have significant overhead. I will simply adapt their mipmap calculation code to my shader and keep the rest of my code intact. The 2x2 bilateral blur using dFdx/dFdy is an interesting concept too so I'll take a look at that too. Thanks for pointing me in this direction!
Concerning more temporal supersampling, I'm not prepared to go any further with that. Preventing ghosting and other artifacts is hard as it is. I am currently using my own anti-aliasing technique which I call Temporal SRAA, which works similarly to SRAA but also uses the previous frame. Since each color sample has a primitive ID, I can eliminate ghosting by only sampling the previous frame if the IDs match. Doing 3x or even 4x temporal supersampling with this would both have a high performance overhead and most likely introduce more apparent ghosting artifacts on shadows and other special effects that the ID matching cannot eliminate, so it's not something I have any plans for.
I haven't taken a look at how many samples I'd need to not have to rotate the samples and/or not have to blur the result, mostly because it has been so hard to find code for generating good sample locations. I'm thinking of porting the sample location code they use in the SAO shader to be calculated offline and passing it into the shader during compilation for maximum performance. This will probably be my first step.