The latest issue of the german magazine "Internet Professionell" (3/2007) comes with an interesting article about the 3 most popular "Open Source Shops" in Germany: VirtueMart, osCommerce and xtCommerce. It's very interesting to read about the comparison of those 3 shop systems and their Pros and Cons.
The author writes about osCommerce: It's an advanced shop software, supports a lot of payment gateways, has a flexible category system, a great community and thousands of so-called "contributions" (which are mostly modifications/hacks to the source code), but the author is critizes the requirement for "register_globals=on" (most users with a sense for security can't live with this). In his eyes the system is a bit outdated from a technical point of view.
VirtueMart allows a store owner to do most of the things he needs to do: product categories, manufacturers, tax rates, coupons, stock management and payment method management...
The author points out that the reporting facility integrated in VirtueMart is too simple and does not allow reporting by customers or shopper groups like in osC or xtC - what a good feature this would be!
xtCommerce has it's roots in osCommerce and was forked some years ago. In opposite to its predecessor it allows design by templates (this is also one thing missing in the current versions of VirtueMart: real page templates - but this is already integrated in the upcoming version 1.1 of VirtueMart).
xtCommerce also brings most of the features store owners need for their daily business including a content manager.
Whatever: there's no winner in this comparison. The conclusion of the article is that each of the shopping carts have their Pros and some Cons and could become better in some areas. The main advantage of VirtueMart is its tight integration into Joomla!. With Joomla! (and Mambo) you get a lot of great extensions and plugins (forum, guestbook, sitemap, ...) without having to hack the code.
ZenCart is another free alternative as well as the Drupal E-Commerce Module. At the end it's up to the user which software he or she wants to use.