Hi Martin,
Thanks for the feedback. You're asking very big questions, I'll try to keep this answers short.
First, while being agile is a worthy goal, using Typemock does not make you so (I wish, but no). It does help you with implementing unit testing, which is one step in that way.
In terms of strategy, you're on the right track. Separate the UI from the business logic, and that logic from the DAL (generated by XPO). Only the DAL should access the database.
Once you have this in place, testing becomes easier, since your testing controllers and logic components, and mock their dependencies. Mocking the DAL is almost always easier then mocking database calls, and make for more robust tests.
Aim for not having any logic in the GUI. The event handlers should invoke methods on other classes that can be tested separately. If you do have some logic there, it's better to refactor it that way.
I'm impressed with you're mocking the database, but like I said, it's better to fake the DAL that abstracts the database calls. It's much easier this way.
That's the strategy. If you're not there yet, it's ok. You should write tests mocking the current dependencies, and then you can refactor them to get to that situation. I won't lie, it's a process. The main thing is to not lose hope. You're already using the best tools for the job, just remember the end goal.
I hope this was helpful. If not, I'll be happy to explain more.
Gil Zilberfeld