I've created a way to create g-code for 3D surfaces in AutoCAD. Thanks to Jon for asking about this and making me think about it.
I wrote a macro to create 3D polylines on the surface of a mesh. Model your surfaces in AutoCAD using the surface commands (revsurf, tabsurf, rulesurf, edgesurf), and then run the macro to create the 3D polylines. Then run the g-code macro, and you're ready to go!
Download the mesh macro from here. http://www.cnczone.com/forums/showthread.php?t=12191
One problem, though. There isn't any compensation for the tool size. On flatter surfaces it shouldn't be too bad. On steep surfaces your part will end up a bit smaller. You can try to compensate a little when creating the mesh, although it might be a bit difficult for some parts.
Also, be aware that undercut surfaces will be cut right through.
Even with the limitations, I think this is way cool.