From a variance standpoint, Bitcoin's design makes the largest pools the most attractive. Which is bad for the security of the currency, and unfortunately an unavoidable result of how Bitcoin works. You can trust that people will "do the right thing" and move to smaller pools, or you can trust the pool operators not to abuse their power, but the whole point of Bitcoin was to avoid having to place that kind of trust in individuals.
Well, the individual miner is just in for profit and has nothing to gain from the pool's ability to disrupt the functionality of the network, so we could safely assume that s/he has an incentive to take away this ability from the pool. So, assuming that we have a mining system that does this with few enough disadvantages, almost everyone with significant stakes will switch. If this is possible, I wouldn't call the current problem an unavoidable result of how Bitcoin works.
Here is one approach:
https://forum.bitcoin.org/index.php?topic=9137Another could be creating a more distributed mining environment. For instance, we could embed an optional standardized pool functionality within mining software, that could be turned on at the user's will. Miners could constantly switch nodes that they get work. In this case though, a trust system or a sophisticated distributed accounting system would be needed.