I don't think Python can truly replace VBA for scripting within ArcMap until there is a way to get to actual ArcObjects in the current session (e.g. through IApplication or IMxDocument). I don't see anything like that at this time in ArcPy. Perhaps I'm missing something? As far as I can tell, MapDocument("CURRENT") only leads to other ArcPy objects, and that's not good enough.