I'm currently working on scripts for a cave generation technique that combines meta-balls (or, rather, meta-circles) and accretion fractals to 'grow' a cavern complex. I seed the level with an initial circle, then proceed to attach or grow additional random circles outward. I'm still hammering out the best method for performing the accretion; currently, I spawn a random circle somewhere out in the void and move it along a line toward some existing random point in the fractal until it collides with a portion of the fractal. Once I've accreted a sufficient number of circles, I generate fields (meta-circles; 2D versions of the meta-blobs, or blobby objects, that are so fun to play with in 3D) and trace the outline of the fields at a given threshold to generate the cave. It's a little hackish, but it gives me decent results. (Incidentally, this is a pretty decent method to use in 3D with meta-spheres. It can grow some pretty interesting 3D cave complexes.)
I'm also refining my random path code. I've build a sub-division poly-line generator that can create a 'squiggly' path between two points, useful for generating slightly random, meandering paths through a level, paths that must connect two specific points but which must also have a degree of randomness to eliminate the unnatural straight lines. I'll probably end up compiling a lot of this stuff into a core library that map scripts can call upon. (This stuff will come in very handy when I settle on an engine and finally try to finish a game.)
BTW, can't wait to see how your cavern stuff comes out.