Ubercart is a pretty powerful drupal module for e-commerce. I recently had to deal with event registration using this module. I played around a lot and learned a lot, but the core of what you can do is summed up in this blog from a ubercart developer:
http://drupaleasy.com/blogs/ultimike/2009/03/event-registration-ubercart