Well programmers love to write code specific to the machine thier on and do all kinds of fancy tricks. So when you upgrade your hardware you find alot of those apps/games crash because of those tricks. I have seen installs for sound card drivers crash because of stupid things like hard coded input timers that expire too fast on newer machines. Or doing tricks outside of the published specs for CGA games that look all screwed up on ega or better monitors (ok thats the dos world).

I do remember companies like creative doing a glide wraparound for thier non 3dfx products so they could play glide specific games.

One good thing about directx is that ever company doesnt go their own way in hardware (like a specific bump mapping was designated as standard for 3d games, same with texture compression, T&L etc) this way a game designer just picks the feature set and the game runs on multiple cards (some slower then others but it runs).