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.