Why it was not possible to use 256-QAM in the past
Probably because it was really hard? As you move to bigger and bigger constellations, you need several things to improve:


You need more dynamic range on your ADCs as you need to discern between smaller changes in amplitude.
You need more linear mixers as non-linearity can move points areound the constellation or in some cases make different points overlap. Saturating your mixer makes the outer edge points move in towards the center
You need more stable clock sources (i.e. phase noise as peter mentioned). Phase noise causes the points to dance around and can cause the constellation to get rotated.
You need more processing power to decode the symbols. This is partly because you're trying to discern between more levels (goes hand-in-hand with higher ADc precision). You're also  going to need to perform more error checking and more compensation.
You need (most of the time) some way to compensate for things like multipath interference, fading, motion etc. These effects are almost always compensated for in software (partly because they are highly dynamic and require constant adjustments) this places a big load on your processor.


All kinds of things that were either less of an issue or not even relevant before, and it only gets worse as the constellations get bigger and the symbol rates get higher. There wasn't any one single invention that helped. It was a mix of steadily improving technology, better error correcting and signal path compensation algorithms, but I think the fact that as time went on, the fact that people required more and more bandwidth played a big role. Never underestimate market pressure as a driving factor in technological development.

(note: symbol rate and data rate are not the same thing).