I think the biggest thing is in the definition of what we mean by
learning a language. If you simply mean being able to duplicate some code and understand what it's doing (along with the obvious understanding of syntax and such), yes, I'll agree that you can "learn" a language in 21 days. However, and I tend to be of this mindset, if you mean being able to do any level of intelligent problem solving and possibly some coding from scratch, no, I don't believe someone can successfully learn a language that quickly.
Now, take into account that I started PHP with one of those 21 day books, too. All I had to show for my time at the end of 21 days was some duplicated code I'd copied and modified from the examples, a knowledge of the syntax, and a basic knowledge of the principles surrounding some of the most general concepts of PHP... and I
am one of those who takes my time, going through every line and page of the book

It really comes down to the level of knowledge that you want to draw the line at as far as
learning a language... and obviously dependent on the intelligence level of the learner, too
