現実には、こう直してもうまくいかないような気がします。ソフトウェア開発は新製品開発と同じようなものだと思っているので、新車開発などでもデザインやモックアップで手戻りが発生しますよね。 (中略) だから、自分的にはXPやアジャイルなんですけどね。

言い換えれば、ソフトウェア開発はオーダーメイド型開発であり、ある程度試行錯誤が必要なことは同感です。しかしビジネスとして考えた場合には、想定外の手戻りは赤字を招くことになってしまいますし、顧客にとってもビジネスチャンスを失うことに繋がります。
これを防ぐためには、What(何を作るか)を可能な限り決めてから、How(どうやって作るか)を決めることが重要だと考えます。What、Howのそれぞれのフェーズ内で試行錯誤する場合のインパクトは許容範囲に収まるかと。
全工程を繰り返すことは、XP以前からRUPでイテレーションというキーワードで言及されていましたが、この場合でも私の知る所ではイテレーションの回数や各イテレーションの目的は計画として策定していました。XP、アジャイルは、一開発者としては魅力的な方法論ですが、時間との闘いであるソフトウェア開発ビジネス向きというより、研究開発やオープンソースにこそよく合っているかと思います。