I've been talking to a bunch of people a lot about this lately, and I feel like I'm the only one that thinks this way. I strongly feel that you can retain people for an indefinite amount of time, given you provide a fantastic place for them to work. I don't believe in the argument "They need to move on in their career" or "It was their first job". In my opinion, those statements are a cop out for the mistake of not communicating well with your team, and a failure to be sensitive to their needs.
Building a rich relationship with your team members to make sure that the communication is open is imperative to retention. And I'm not talking about penciling in a lunch with the team members and mandate that they "be open with me". It takes more than telling them to be open with you to achieve openness. Earn their respect and trust with active listening, and then taking the time to truly think about what they do and why they do it. If you don't feel like you have a great feel for that, then think if there are any other team that have a great relationship with the person, and talk to them and find out more.
You've got to be sensitive to what makes them happy, what pisses them off, and what conditions are ideal (or not ideal) for them to work in. You've got to recognize the difference between the productive and the destructive items on their plate, and remove the destructive tasks immediately. If you can't remove it right away, take a second to think about whether or not losing this great person is worth the benefit destructive task. If you've made that argument, and it's still something that you absolutely can't remove right away, put a plan together, and communicate that plan and it's progress regularly, to show your all-star that you're committed to making sure they enjoy what they are doing.
Take the time right now to think about each of your great team members (hopefully this is everyone on your team). Think about what their current areas of responsibility are. Are any of those areas destructive? Now think about their disposition. Are they showing signs of being disengaged?
If either of those questions are yes, then DO SOMETHING ABOUT IT RIGHT NOW. Send them an email saying you know the destructive task on their plate is a problem, and that you're focused on doing something about it. Call them and tell them that you recognize that their environment isn't ideal right now, and that you're going to do something about it first thing in the morning. If they aren't engaged, meet with them first thing and ask them why and continue to probe until you get to the root of the problem.
As I read this stuff, it all sounds so simple, and I'm sure we've all heard this before, but it always gets lost in the shuffle. Don't let it get lost, great people are so hard to find, you can't afford to let them go. I strongly believe if you're attentive and take the time to realize that there isn't a single more important thing that you do every day than retaining your great people, then you'll never let a great person go.