I'm frequently (weekly) asked by clients I visit, "Where doesn't an agile development approach work?" Or, they tell me an agile approach won't work in their environment for numerous reasons.
In my experience, general agile development practices are superior when the problem domain is complex and/or dynamic, and solving the problem benefits from a more empirical approach. This is true even with distributed teams.
This is because in dealing with complex problems, the natural cognitive approach for human beings is to decompose the problem into smaller pieces, and work to understand the smaller pieces so that those pieces can enable an understanding of the whole problem domain.
The amusing thing to me is that this behavior happens within the phases of sequential, phase-based approaches to software development projects, yet the overall approach ignores this and tries to freeze the dynamic nature of the problem domain. Agile project management expresses this idea up through its execution approach with the inspect and adapt cycle.
Does this require more communication/collaboration? Yes. Is this an issue with agile processes? No. The same conversations need to occur to understand and allow requirements to evolve. It is a choice by the organization undertaking the problem whether they have the conversations or not.
If you have a problem domain that is simple, one where using the same sequential process results in getting the same outcome that is within your acceptable measure of quality, then use that approach.
I was just recently at a client that stated that agile wouldn't work for them because the high degree of complexity in their problem domain and because of their distributed team nature. They continued to explain that using waterfall enabled them to not have to communicate as much :-)
Waterfall software development methodologies allow people to sweep all types of process, organizational and interpersonal dysfunction under the proverbial rug and defer the problems this causes until the "death march" -- or in the worst case, after the so-called value has been delivered to the customer and they find dysfunction in terms of their needs not being met or poor quality.
So the next time you hear this question, consider whether the issue is the approach, or because of lack of discipline, lack of competence, organizational dysfunction or interpersonal dysfunction within your team; all of which, agile approaches are brutally blunt at pointing out. Many just don't want to deal with the impediments and feel more comfortable "sweeping them under the rug".



Don't be tempted to select pilot projects that are off the radar and of little importance. You are just inviting those fearful of change to sabotage your efforts because the cost is low to them and the organizations. Be sure to pick projects for your pilots that have visibility & meaningful impact to the business.
It must be understood that the Product Owner is perhaps the key role to staff with strong players to help ensure your pilot project's success. This role must be committed to the project and empowered to decide on scope and schedule.
To help demonstrate the true capabilities of an agile team, it is important that the team for our pilot project(s) be cross-functional, with representation from Dev, QA, UI, business analysts and if appropriate, tech writing. Another advantage of starting out with a cross-functional team is that they will all get educated and indoctrinated into agile and will take the message back to their functional constituency to help get others at least curious about trying out agile.

few good reasons:



In a more traditional functionally siloed organization, people tend to communicate mostly with people that have the same functional focus and likely, more common motivations. These functional groups tend to have much less communication and collaboration with those in other functions that frequently have different motivations. In the worst cases the communication between such functions happens almost exclusively through detailed documentation, and rarely is communication face to face, except between managers. 



Just recently I attended Lean 2010 in Atlanta, GA, April 21-23, 2010. I ‘learned’ something that I didn’t know before… basically that Scrum / Agile is broken and Kanban software development is the answer. I heard two presenters at the conference giving experience reports that distinguished Kanban as being separate from Agile development approaches.