I'm building a single product store, where that product is a monthly service.
It's an online service, so there's no shipping involved.
It's B2B, so there's no tax involved.
The customer information is stored in another app, so registration is limited to username/password, etc.

To be honest, nop is probably overkill for them right now, but I think they'll be needing more of it's features fairly soon.

Here's the checkout process of my dreams:

Page 1: Choose product, and options, display dynamic 'basket' as things change.

Page 2: Address info, NOT to be stored in nop.  
  Should I hijack the register page to do my thing here?

Page 3: Account info (username/password), logins are required.
  I need to assign additional User Roles here, based on what product was ordered.  

Page 4: Payment information.
  Depending on how they pay, their account may be activated immediately, or approved later.

Hopefully, all of the above can be done (or even better, somebody has already done some of this).

All suggestions welcome.