I believe that Ton is already working on this (though I'm not sure), but AO can be sped-up significantly by using a method very similar to the one presented in "Ray Tracing With Adaptive Super Sampling in Object Space" (
http://www.cs.uaf.edu/~genetti/Research ... 93/GI.html). I like to refer to it as "pyramid tracing", though I'm not sure if it has another name that is supposed to be used. Anyway, pyramid tracing is a way of taking advantage of space-subdivision optimizations by accounting for spatial-coherence among rays.
In short, if you have a bunch of rays originating from the same point (as you do with AO), you can treat them collectively as a pyramid. You can then trace that "pyramid" through the octree structure until it hits a node that has polygons in it. You then subdivide the "pyramid" in to smaller pyramids (i.e. regrouping the rays into multiple smaller groups), and start checking those. You continue doing this recursively (tracing pyramids until they hit an occupied node, and then splitting them into smaller pyramids, and tracing those until they...) until you eventually split the pyramids down into the individual rays.
This "pyramid tracing" optimization avoids a lot of redundant ray-tracing through empty space, and is a particularly effective speed-up when you are dealing with a large number of rays origination from the same point in space (as is the case with AO, area-lights, and blury reflections/refractions).