dons' comment is pretty much spot on. Will STM work for langauges like Java? Probably not. Does it work for languages like Haskell? Yes.
But anyway, people are very resistant to change in the computer programming community. New technologies == having to learn something new, and that's apparently a bad thing. (Look at how many people still hate automatic garbage collection, even though it's generally faster than manual memory management. It's scary and new, so let's run away!)
Microsoft seems to think it will work for mainstream languages, as they're developing an STM implementation for .NET. It's in "incubation", which means they're not certain to productise it but they are actively working toward doing so.
Worth watching if you're interested in the topic. They discuss some of the issues raised in the Enfranchised Mind post, and what they're doing about them. There are some other interesting tidbits about how STM and concurrency primitives can interact confusingly, and the way they're hooking things like SQL Server into the STM machinery so that other things besides pure shared memory access can get the benefits of atomic transactions.
It's either yay or ney, there's no someday. There's no reason why we can't use it now. The implementations are there. You just have to use a pure language, like Haskell.
But anyway, people are very resistant to change in the computer programming community. New technologies == having to learn something new, and that's apparently a bad thing. (Look at how many people still hate automatic garbage collection, even though it's generally faster than manual memory management. It's scary and new, so let's run away!)