I use CSLA with vb5 when it was more from a collection of templates than it was a structure. With the introduction of .NET, CSLA evolved into a full-blown infrastructure with a complex learning curve. However, CSLA considers many things that all business developers tend to write at some point (depending on the scope of the project): validation logic, authentication logic, cancellation functionality, dirty logic, etc. You get all these things for free from in one beautiful structure.
As others have argued, being the foundation, it forces developers to write business logic in a similar way. It also forces you to provide a level of abstraction for your business logic, so as not to use a user interface infrastructure such as MVC, MVP, MVVM, becomes less important.
In fact, I would say that the reason why so many of these user interface templates are so bloated today (in the Microsoft world) is because people have been doing things incredibly wrong for so long (i.e. using DataGrids in your UI spraying your business logic everywhere. (Tisk tisk). Create your middle level (business logic) from the very beginning, you can reuse your middle level in ANY interface. Win Form, ASP.NET/MVC, WCF Service, WPF, Silverlight **, Windows Service, ...
But beyond that, the huge profit for me was the built-in ability to scale. CSLA uses a proxy template that is configured through your configuration file. This allows your business objects to make remote calls from server to server without having to write one liz of code. Adding more users to your system? No problem, deploy CSLA business objects to a new application server, make changes to the configuration file and BAM !! Instant scalability is required.
Compare this to the use of DTO, keeping your business logic on the client (any client that may be), and should write each of your own CRUD methods as service methods. YIKES !!! Not to say that this is a bad approach, but I would not want to do this. Not where there is a basis to do this for me.
I am going to repeat what other people said that CSLA is NOT an ORM. CSLA forces you to provide your business objects with data. They don't care where you get your data. You can use ORM to deliver business objects with data. You can also use raw ADO.NET, other services (RESTFUl, SOAP), Excel tables, I can continue here.
As for your TDD support, I have never tried using this approach with CSLA. I applied the approach when I model the middle tier (ala business objects) using class and sequence diagrams, most often allowing the use script, screen, and / or process. Maybe a little old school, but UML always inspired me well in my projects and developments. , . WCF RIA , CSLA..
**