Agile is successful if you have an organization that is committed to doing it right. No methodology will work if you don't have commitment and training in the methodology.
I would also say that agile works best at a certain scale. You have to be able to divide your project into reasonable size deliverables. You wouldn't be able to build an office building or a nuclear submarine using agile.
Similarly, in software, some projects are large and complex enough that you really can't start without doing a lot of the up-front design work using a more waterfall-like approach. Think about something like an operating system, for example. Another example would be a system that crosses many organizational boundaries, like a national health electronic record system.
Once you've done your overall architecture and design, you can use agile to build-out the features, but if you started with agile you probably wouldn't get off the ground.