There is a reality that lots of companies look at their employees as the same as when they hired them. Meaning, a junior person has a hard time shaking that "junior" title, but can move to a new company and start fresh.
In addition, it is shocking how often companies don't promote from within, but offer higher level jobs to outsiders "experts".
Then you have the situation where your company just isn't growing. They can't afford to give you raises or have positions you can move into. Again, for growth you have to move on.
Like many others said, the biggest reason employees don't stick around is that the current corporate culture views employees as expendable resources they would rather not have to have. Shareholders come first, at all costs - even to the internal health of the company.