Here's my initial shot at a multipage cart module (actually it's my second, but my first was a complete custom rewrite, doesn't use the panes system and is quite separate from ubercart).
Basically what I've done is used the form_alter hook to render the checkout form, but depending on the page you are on, only a subset of the panes are visible.
This way, all Javascript used in the panes still works, and hopefully the majority of panes won't even realise that they're in a multipage checkout.

