I really like the spirit of what Agile tries to do. I liked it so much I tried to push this idea where I worked and it was easy for everyone to smile and say yet, but to implement was difficult. The biggest problem was Agile requires significant customer (sponsor) involvement as they are supposed to control what is built and approve the releases. Well, getting these people, that already worked 12 hours a day, to spend the significantly more time needed to do agile development proved very difficult. Going through the steps of Agile type development is not enough for it to work. The customer has to be heavily involved and that is where you hit problems.
So, I devised a more realistic approach of development which takes in the spirit of Agile and incorporate the best of other proven methods like Iterative, Prototyping, Staged, Timeboxing, XP, and so on.
Personally, I do not believe one size fits all. You need to first understand all the different methodologies and lifecycles then customize it for your environment.