Today a colleague at work asked me what is needed to do a successful retrospective with a project team (more precisely a group of scrum masters in a multi-scrum project).
What I answered him was that the process (of the actual retrospective meeting) is not as important as the people aspects of the meeting.
In a retrospective the hardest thing is to make sure that all people feel at ease to talk about the real problems that any project faces. What is hard is creating that relaxed yet serious atmosphere where everybody can talk about serious issues but still take it lightly enough not be offended or feel personally attacked when their actions are under criticism. If you fail to create this atmosphere you will not have any of those "eureka" or breakthrough moments that successful retrospectives can bring.
I believe this is the key to a successful retrospective. In one project we got to the point where we could criticize each other's actions (not the people!) very much directly without beating around the bush, but we had at that point invested a lot of time (and some money also) in creating a very open atmosphere in the project. To achieve this level of honesty requires you to work at it during several sprints/months (it took us at least 7 months to get there).
All in all if you are looking for that "Eureka" feeling in a retrospective don't expect it in the first few ones you hold. They will come, but only when you have been able to make everybody feel "at home" with each other.