Most people leave because of the following:
- the company is on shaky ground
- bad management (stressing the employees, giving them too much work, overtime, and so on)
- treating them like average
You're in a company of type 3. if
- you don't have a bonus system
- you don't get paid overtime more than usual hours or you don't get paid overtime at all
- if you perform good or very good, there's no message from above; only when your work is less than average, then you're marked as "bad employee"
These companies are setting themselves for disaster - it might take 10 or more years, but it'll happen. They'll make room for the new companies - where people are rewarded for doing good work. And this will actually make people be more responsible.
When doing a project, a good company will think and plan for bonuses from the start. This sends an amazing message: you do great work, you get rewarded.
Of course, not everybody is fit for such a company. But if you're in charge of one, you'll also be able to filter out the average. And more to the point, your people will stop leaving.