The xkcd comic doesn't really apply anymore. Dictionary attacks have gotten to the point where they can crack 'momof3g8kids' and 'Coneyisland9/,'
and apparently have dictionaries breaking 100 million words. As password attacks get better and better at predicting human patterns (and hardware gets faster), you are going to need to completely generate your passwords at random in order to defend against dictionary attacks.
Which means the current password model is broken, as we all know it has been for a while. Why isn't there a stronger effort to replace it with something like a universal public key system?