Hi,
I believe that in an organisation, people stay because of individual reasons.
I think we can attribute the reasons according to the Maslow's theory of hierarchy of needs. I have just reproduced(From a website) the 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 always will 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 oranisation 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 organisations.
My personal suggestion is that there should be a process for managing attrition. In large organisations , 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 a mandatory one once in 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