Haste is good, possibly for its level the best spell in the game, but overpowered, not in the least. I have a relatively high level Sorcerer in my campaign now that ALWAYS uses haste. Its tough, its abusive but it is NOT overpowering. Why? There are always counters and balances to everything. When you find something that has no counter and no balance EVER then you have something overpowered. That said Sorcerer also has the least amount of hit points in the group BY FAR. At his current level of 12ish, with the CR of what they are fighting, he can dish out a ton, slay many but if I so much as hit him twice in a good combat, he is done, simply. Cast haste on the fighter and he is a beating war machine of overpowered death? Not likely, he still has to make will saves which are not always so good. As the DM, dont change the rules if you don't have to, just adjust the game to fit well within those rules. Sure, it doesn't sound right to have every encounter based upon HASTE where I ensure the giant will get to hit the Sorcerer as a result of him/her casting haste, and I can charm or dominate the fighter just as he receives haste and I can have a wizard in the back with a readied slow every time but there are always ways around it. The bottom line is consistency. Can you say that every single time, for every single encounter in the game HASTE made the difference, or even the largest difference. Sure, the Sorcerer may unload a fury like no other and slaughter encounter after encounter JUST because of haste BUT what about the encounters when all I do is focus on charming the fighter. If he has haste then he is going to beat the snot out of the rest that much faster. The common argument might be "You have to specifically design an encounter just to offset the problems that haste can cause". Well in a way, yes you do, but that should not single out haste because in a way, everything the DM does should be designed with that in mind. Sometimes I need a specific ANTI-fighter encounter filled with less melee and lots of will save casting ranged freaks. Sometimes I need brutal high hit point, high damage giants to run around trying to one shot kill the caster. Other times I need to simply create very intelligent encounters to single out the cleric to deal with his/her abusive spontaneous casting. Fixed or not, it is a matter of consistency and 2 very simple rules.
Rule 1. Gameplay takes precedence - It doesn't matter what player A says vs. player B and what the DM says againts player C. It doesn't matter what this book says or that book says, put it in game and if it works well then run with it as is. It CANNOT be broken if you can think of any single situation in which it does not determine the outcome of the battle. I can come up with many situations that could and would sound broken if not for a great DM counter.
Rule 2. The DM does not ALWAYS have to be fair just consistent.
Remember also, the players are always at a HUGE disadvantage. Don't take away what they can do. The more you limit to the players the worse off it is because there is always one constant. PCs run out and character sheets can be made and remade only so many times. The NPCs and DMs critters are endless and never run out. Eventually no matter what character is to rough, what spell is to strong in an intelligent players mind and what PC group comes up with what sort of "cheese", the DM can and will find a way to put all in its place. Again I state, you dont always have to be fair, just consistent. My players love me for it because it gives them a sense of respect and balance in the game and they know that they can have a freedom to create and play what they want without fear of nerf because I can and will always find a way.
Its a long one, but you seriously need to think about it before you cry broken, overpowered or nerf.