3NF optimizes for space, the cheapest resource, at the expense of everything else. It provides the illusion of mathematical simplicity, while actually just imposing a bunch of arbitrary constraints on how you model your data, without offering any benefits in return.
It makes things so slow that nobody actually uses a 3NF system in real life, people just waste a bunch of time modeling things that way and then as soon as that is done, they turn around and denormalize everything with indexes and temporary tables and caches to get the stuff to perform semi-usably.
So much complexity, for nothing.
ACID transactions were just about the only worthwhile serviced provided by relational databases, and for ages most programmers chose a DB that didn't even do that right (MySQL). Not actually sure it does yet.
Also, running an entire OS within my OS just for data has always been retarded. Let's double the work of all our sysadmins, why don't we? Their jobs were too easy before.
Did I mention that I really dislike RDBMSes? :-)
You simply cannot spread a large data-set over multiple machines in any meaningful way, you are stuck with a narrow bottle-neck that is also a single point of failure.
For small sites with no traffic and no reliability requirements, this doesn't matter much. Those sites can also use bubble sort. :-P
But anyone experiencing rapid growth or with availability requirements will end up spending massive amounts of time fighting with their database.
It's just a bad design decision that will bite you in the ass if you succeed, for most definitions of success.