Legacy politics assured that Iowa and New Hampshire would get the lead in setting the political agenda of a Presidential race. If you can't please them, it's hard to get nominated. And now they protect this position as hard as they can. Florida tried to move and got slapped.
There is a better way. There should be a lottery, or simply a rotation, on who gets to go first each time. All parties in a state would have to agree, but I can't see why not, and really all you need is the Republicans and Democrats. Hold the lottery several years in advance.
Letting states or regions be equal is probably best. I originally thought you might allocate chances by state size but in fact you don't want big states first. Only states that want to participate, and have their event early would be in the pool. Any state could participate in a super Tuesday or other such later events without having to win the lottery. Iowa and New Hampshire would not be permitted to participate in the lottery for 50 years -- they've had their say!
A rotation might be even better, though it would have to initially be set by lottery. To make the rotation go faster, depending on how many states want the position, there could be a couple of "first" slots and 3 or 4 "second" slots allowing 5-6 states to be important each time. A rotation however has a problem when one state changes its mind and wants to join the early pool.
Of course, you might ask, why not actually have a deliberative process, where the states are carefully chosen to be more of a cross section of the general public? It sounds good, but little stops this now other than party cooperation, and it hasn't taken place. Of course the parties may well feel that Iowa or New Hampshire push their opponents in ways they want them pushed, but this should balance. And Iowa is certainly not representative -- as it is now popular to point out, a lot more people play World of Warcraft and live in urban condos than are family farmers. As it stands now the parties have to field candidates who won't piss off the Iowa or NH voter too much, and that's wrong, because it may be necessary for the right candidate to take stances against the interest of these minorities.
Update: It is suggested that some states, like California, are simply too huge to do an early primary, because candidates can't yet afford to campaign somewhere that big, nor can they get intimate with the public. I agree, and so possibly the largest states would have to bow out of the system. Or perhaps they could hold mini-primaries for just a small portion of the state if they win the lottery, and the rest of the state would vote later, on a Super-Tuesday or similar. This does mean for example that the Democratic primary might be in San Francisco, and the Republican one in Orange County, surveying very different voters. The regions could compete in the lottery rather than the state, assuming the state assigns delegates by geography.