I am in a very similar position.
See question
I decided to use WCF at first, but the Delphi WSDL importer just couldn't hack it, I'm now using ASP.net asmx web services, and interoperability has improved vastly.
We're applying a phased migration from a thick client with inconsistent in-line SQL, stored procedures, and up to 900 - 1200 line methods, to a multi-tier solution. Once server side functionality is in place, we move on to implementing the change in the Delphi client. This allows the existing application to continue to work, and testing and deployment can be done in stages.
I started with implementing the DAL, and using Entity framework, we have all our data tables represented as entities, and exchange data with the client using data transfer objects for each entity.
Next the business logic will be migrated functional area by functional area, finally the client, will simply do what a client form should do, allow the user to interact with the application.
One of the main reasons we went with EF was to allow Visual studio to auto generate the delphi classes, with change tracking (still working on that) and data persistence logic by tweaking t4 templates.
There is still one snag: data-binding on the client from a .Net web service is still impossible with Delphi 2010. We are therefore going to leave this until last.
All this will give us the ability to implement bespoke customer requests quicker, against the server, without undermining the client design.
For those asking why, and insisting it is always a bad idea, bear in mind, that in some cases (like mine) these well used applications, are very complex, and not all the Delphi developers are still around to justify questionable design and programming decisions. Currently adding new functionality is always a gamble, when variables have multiple meanings, and for an application of this size the Delphi 2010 IDE has been inadequate, creating a real headache to maintenance, after coming from Visual Studio. Don't get me wrong, I learned Delphi to take on this development, but the way this historical product was written (in Delphi 5), is completely unsustainable.
The question isn't why, but in many cases: how long can you afford to ignore the issue before being forced to carry out a major rewrite, or abandon the product?