<p>I have an winforms application that was built using MVC.  The controller is subscribing to all of the events from the view (button clicks, etc) and connects multiple views with the model. </p>

<p>The problem is that the controller is now about 3000 lines of (hard to unit test) code.</p>

<p>What is the best practice to avoid getting controllers to do everything and become so big?</p>

Depends on the situation, but assuming you are not at a point where a new controller should be created there are several approaches.
Much depends on your setup.  One common approach is to have a service layer or service agent which would do work for the controllers that is not specific.  The use of interfaced helpers or even static ones should remove some of the repetition.  300 lines does not sound to bad at all assuming it is broken into testable methods.
I would be interested too to hear of other opinions other than the oft repeated mantra of creating more controllers.  We use MVP and have experimented with sub controllers but this does rely on careful usage and is probably a bad idea.
It is common to have one controller per module in MVP, which would relate to a logical part of your application.  There should be a few clear ones within your domain and a few that are maybe a bit more difficult to distinguish.