Without having looked at the code, I'd say that such a separation effort is definitely the way to go (in fact, I created the Contours.jl package for very similar reasons, based on code originally in Gadfly).
I would even think it makes sense to move the Compose-based drawing into Gadfly, to make the GraphLayouts package independent of drawing backend (and thus reusable by other plotting packages too). This might be a too big operation to handle in one go, though. // T
