Having made an ecommerce site from magento itself, I'd say that although it's way better than OSCommerce, it's slow, and very poorly documented. It is as if Varien wanted the poor documentation to happen so that you can hire them for helping set up your site.
It is slow because it practically uses EAV for most of it's data. To fetch manually for example, an order, you'd have to parse through different tables to find out what that order exactly is. And the whole system is one big object extension of the Zend framework! Adding APC and memcache makes it work better and faster, but it is still slow.
Also, the templating system is daunting, to say the least, for beginners.
Also, one big peeve of mine is that it has limited order statuses - shipped, processing, complete, among others, and so far, I haven't found a way to add this reliably (although you can add it to a drop down box in the admin panel, what happens is that you cannot call it through a class)
But once you get the hang on it (mostly, since looking at the huge amount of code without comments is very very overwhelming), it can be very flexible. So far, we've made a system to let it contact a fulfillment company for deliveries at the start of every day, and let the fulfillment company update us when those orders were delivered and shipped out. It mostly works too, and it's fairly automated, that we've just left it alone.