Hi,
I believe that in an organization, people stay because of individual reasons.
I think we can attribute the reasons according to Maslow's theory of hierarchy of needs. I have just reproduced (from a website) Maslow's pyramid with relevance to the current trends.
The needs are different for people at various levels. We should identify these needs and try to address them.
But please remember that attrition is a reality, and employees will always find better value for their skills elsewhere. Attrition cannot be prevented; it has to be managed.
I also agree with Bob's views that in an organization, we tend to promote people with supreme technical abilities as managers. They sometimes fail if they are not good people managers. Hence, increasingly, two ladders are being created for growth (Technical and management) in organizations.
My personal suggestion is that there should be a process for managing attrition. In large organizations, employees down the hierarchy don't even know or get to meet their managers. I suggest that making one-on-one meetings with the staff the manager is responsible for mandatory once a month. Any indications of dissatisfaction/concern can be immediately acted upon. A consolidation of the meeting notes can serve as a good indicator of the morale of the employees in that division/group.
Regards,
Srivathsa