Well, hiring from outside is a solution to the Peter principle. I'm not saying it's a good idea, but it has its justifications.
There are lots of reasons and every situation varies, but my experience is that the reason people don't get promoted has way more to do with bad management than bad potential managers in the pool.