I'm 100% against SM4.0 and DirectX10 - it's just a money making stunt that should not be flaunted if one looks at the scarce use of SM3.0. Like I say, something has to be used to sell Vista seeing that the database file system has been dropped along with numerous really needed features.
What?
DX10 resolves a number of issues facing GPUs. DX9 is just an upward patch of DX6/7. It is time to break out of that framework. Just looking at how the industry has changed it is obvious the old model of static meshes with hard coded texturing effects is out and completely programmable pipelines, shaders, and procedural generation are in.
Virtualization of memory, the ability to destroy and create new vertices, pooled resources and unified languages, a completely new pipeline element (Geometry Shaders), the entire shader array is programmable (gone are the hardwired effects), etc. This solid step forward in years, and is also the first full release that aims at making GPUs more general processing (and programmable) elements instead of fixed function hardware acceleration.
DX10 has been in the works for a very, very long time. It is the biggest and most important advancement in D3D ever IMO. It fully embraces GPUs as programmable entities and addresses a number of PC-centric issues (memory footprint by virtualizing the memory, CPU<>GPU communication by allowing Geometry Shaders to do much of the work CPUs now do, etc).
As for SM3.0, the scarce use of it is because a) ATI waited to release SM3.0 parts b) NV's SM3.0 implimentation sucks and c) it took 2 years to get a game that used DX9 for anything of significance.
On this last point, DX9 was released in Fall of 2002. Far Cry is the first "real" DX9 game, in that there was a big difference in the various modes. That was released in Spring 2006. Yet to this day we are STILL waiting for a DX9 SM2.0 game -- a game that REQUIRES SM2.0. UT2007 looks to be the first. So 4 years after the launch of SM2.0 we will FINALLY get our first game that leverages this technology as a baseline. To compare SC:CT supported SM3.0 pretty quickly. So your comment about SM3.0 adoption is skewed. SM3.0 is no slower than other API releases.
The fact is it will never take as much traction as it should. The cosoles will help some, but the real culprit is SM3.0 is underpowered, and it trying to accelerate a "broken" model. Basically it is like adding a shiney exterior to a Pinto. DX9 is kind of psychotic--it has full legacy support while trying to embrace a shader/programmable model of rendering. Jack of all trades, master of none.
DX10 is intended to break COMPLETELY from the old paradigm and be a new platform. It significantly improves workflow and thoroughput while adding a number of features long demanded by developers.