Have you looked at
ViewState: Various ways to reduce performance overhead[
^]? There are a million articles on the topic.
Better yet, set EnableViewState = false on all controls (or even the page if possible) that don't actually require viewstate.
Use the ASP.NET trace output to view the viewstate size and, if you do need some viewstate enabled, at least you'll be able to see which controls are contributing to the viewstate bucket and disable viewstate for all but the ones that really need it.