Agile should not be used when the software is being developed by teams who are not co- located. If any of the individual teams use agile methods, it is very difficult to coordinate their work with other teams. Informal communication which is an essential part of agile methods is practically impossible.
Agile should not be used for critical systems that cannot afford error (think NASA). However, some ideas from agile approaches such as test first development are certainly useful to critical systems.