At the MSDN DevCon last month in Chicago, one of the groups in the community center had a very good discussion going - "How do you know when a project is screwed?"
A lot of good ideas floated around:
There is no test code
All code just has "catch (Exception ex)" everywhere
There is no source control - really some projects still just make zip file backups, not even using the free SVN.
Reinventing basic framework methods
Lack of team innovation
I think that team chemistry and discipline is also a very good indicator of project success. A team that hates each other will likely fail, even if they're all individual stars. So, I think another good indicator of failure is bad team chemistry.
This sort of thing is very-opened ended., I'm assuming that anyone who's been around long enough has seen a dying project, and there are a slew of different reasons.