http://fivethirtyeight.blogs.nytimes.com/2012/07/11/iowa-racially-homogeneous-but-politically-diverse/Here's Nate Silver's analysis
In short, he says that Iowa has added a lot of white collar and high tech jobs in recent years and many of those people lean Dem. It's also one of the most educated states in the nation. Eastern Iowa also has a lot of manufacturing jobs which makes that region vote a lot like the rest of the rust belt.
Another theory I have is that since the state is so important in the nomination process, both parties have gone to great lengths to cultivate strong bases on support. So, the demographics were always there to make it a swing state, but the parties have accelerated the trend. NH, as the first primary state, is also famously competitive while other states around it with similar demographics are not.
Theory #2: The state is very white, so without a large minority population you don't have the same kind of reactionary conservatism you might find in more racially diverse states like Illinois. At the same time, it's just outside the bible belt so there's not a very strong evangelical culture like you'd find in Kansas or Missouri. The end result? A homogenous population that votes purely on ideology and issues, instead of racial or religious tribalism.