IMPORTANT NOTE: This article was written in 2009. I was really enthusiastic about Ubercart when I wrote this, but the world has changed a lot since then. Check out some of my latest thoughts about Ubercart and Drupal Commerce at this new review.
Having reviewed dozens of different shopping carts, installing at least three different systems, and even having written a complete shopping cart from scratch, I can tell you that hands down, shopping carts are the most challenging options for site engineers, managers and owners. Sure, in the grand scope of things, there are much harder things to install on a website. But just in terms of day-to-day complexity, ecommerce is the winner. From inventory control to SEO, to payment gateways and customer management, nothing else online offers as many details to manage day after day after day.
That's why the shopping cart you choose to install is so important. There are dozens of them out there, and it's amazing how functionally limited some of them are. Many have terrible user interfaces, others have gigantic learning curves. Some are easy to use, but forget about some critical detail--say, inventory control or payment gateway integration.
That's why I'm so excited that Drupal has Ubercart, a system that's awfully close to being perfect, and in my mind, the single best open-source option for anyone looking for ecommerce on their web site.