Robert Glass has a nice, short article on some findings on software project success:
http://www.developerdotstar.com/mag/articles/software_success_failure.html
Something he lists as a surprise finding that bothers me:
"Post mortem reviews are rarely held, and when they are it is almost always on successful projects "
I'm pretty sure it's more important to do lessons learned activities when things didn't go well. Learning from mistakes seems to make the lessons more permanent. I think one of the signs of a healthy team environment is the ability to do retrospectives freely and calmly, then follow through with changes. I'd call this post from Steve Eichert, detailing some hard lessons learned his team faced, a sign of a healthy team.
One of the findings Robert Glass talked about was:
"Success comes from a culture that investigates and deals with problems "
I'd simply add that it helps to do retrospectives often, preferrably after each iteration and release. Software development is still an unsettled, chaotic process. Success seems to be largely predicated upon the frequency of your feedback cycles and your ability to make changes based on that feedback.
Anyway, enough from me. Go check it out.