For the most part, the candidates talk to the voters of those two states, not to the rest of us. What candidates say in Iowa would be very different than what they would say to voters in a state like California that has open primaries. In California, they would have to appeal to everyone or lose.
In Iowa, they only need to appeal to a tiny, insular, homogenous group, i.e., Republican primary voters, nearly all of whom are very conservative and christian. After voters in those two states cast their votes, some candidates drop out.* Obviously, it isn't fair. And, given our current state of affairs, its equally obviously not effective or useful. The small numbers of voters in those two pipsqueak states have far more influence on national politics than they deserve.
* For example, Tim Pawlenty dropped out of the race after finishing third in the Iowa straw poll. He spent months and thousands of dollars trying to win that "race" or whatever a straw poll is. People in other states never had a chance to express a different opinion. One can only wonder, how many Iowa Republican votes did it take to knock Pawlenty out? Apparently just a few - about 17,000.
Broken and needs to be fixed
Something different is long overdue. Who goes first could be based on a lottery that picks a big population state and two or three smaller ones to be first and then rotate similar groups of states in subsequent primary election cycles. It could be a rotating regional primary with the country broken into 3-5 regions with one going first in one election and the others in subsequent elections. There are many different ways to set up a fair and rational primary system.All the average voter can do to protest is to boycott (ignore) Iowa and New Hampshire politics and tune in when things get local. The system forced on us is a travesty. And, if our current state of affairs is any indication, it hasn't worked in finding outstanding presidential candidates.