Perhaps the best you can do is look at your code base with an eye for the single responsibility principle. One of the main reasons that that the autonomous view (and winforms, which fosters it) is so difficult to test, is because developers tend to lump everything together in an event handler.
Take this question on SO - https://stackoverflow.com/questions/16599778/asp-net-mvc3-linq-make-multiple-related-rows-fields-in-a-1-to-many-relationshi, it's about MVC3, but it's a total mess - one method that is responsible configuring the gridview, configuring the response, and retrieving the data to populate the gridview. It's tough to even know where to begin to answer the question, let alone write any reasonable (read: concise & fast to execute) tests to ensure the solution works.
If you can carefully go through your code, and carefully encapsulate all of the business logic and/or integration points into services/components/interfaces (and implementations), preferably in separate assemblies outside.
Once you have broken everything the logic into separate components each focused on it's own concern you can write tests for then to ensure that they perform the task they are meant to, without having to test any other part of your application, these will be your services. You want to shoot for each service type to be an interface backed by an implementation.
After you have all of these different projects and assemblies written and tested, you introduce them back into your application using inversion of control (a form of dependency injection). This further decouples your UI from the various business logic that your application is meant to perform. The dream here, is that you will get to a place where, when you are ready to rewrite the UI, you can reuse the business logic components that have already been written and tested.
I'm thinking that the winform class will have a constructor that accepts many arguments (a mix of the various services discussed above). The DI framework will be responsible for providing the services to the winform class. After that, ideally, your winforms event handlers will be relatively small, simply calling service methods with parameter values collected from the various form fields.
Here's a post on using Castle Windsor (a dependency injection framework) with winforms: Using Castle.Windsor with Windows Forms Applications. There are many different DI frameworks, I use Castle Windsor because it's the one I learned first, they all do essentially the same thing, so, all you need to do is find one you are comfortable with.
Here is a separation of concerns tutorial that is based on a web application, but should be instructive as to how to identify & refactor services out of an existing 'kitchen sink' application.
This answer is turning into a book, and it's all very abstract. The main thing is you need to think about application as a set of lego blocks that you combine to produce functionality (each block is a concern), and the UI is simply the glue that holds the blocks together (that analogy isn't perfect).
Really, it's more art than science, but you can train your mind to look at problems in that manner, and once you do, programming, in general, becomes a lot easier. The curve is a bit steep, but, keep at it and you will get there.