The CPython implementation will continue to use a GIL. Performance would be hit too badly by any attempt to remove it, due to the need to lock data structure access during critical sections.
IronPython, Jython and PyPy are all free of a global interpreter lock, though I don't know how much work has been done on proving them thread-safe under all circumstances.
See the Wide Finder project
by Tim Bray for a useful discussion of concurrency issues.
Comparisons are made of different languages etc
The estimable Mr. Fredik Lundh made a signal contribution to the
The techiques presented in this article would seem to be widely applicable.
CPython does use native threads for multi-threading - so threaded applications do use more than one OS level thread thread even though your comments about the GIL are true.
As pointed out at the parallel-processing session, multi-core architectures are effectively crippled when synchronization objects are depended on. If you can make your threads spend less time waiting on synchronization objects, your effective processing would parallel much better. Future advancements in processing power is pointing more and more towards multi-core systems rather than increasing amounts of MHZ. Dual core was introduced not too long ago and quad-core is in the pipeline for this year.
CPython depends critically on the GIL. If this implementation is not corrected, it would mean that we are stuck on the current CPython performance 2 years from now, 10 years from now, 20 years from now.
I believe Adam Olsen was working on patches to CPython which permit better usage of system threads. I'm not sure what the status of this work is, however. Apologies to Adam if he isn't actually involved with such work or if it's currently in "stealth mode" and he doesn't want to enter into discussions about it.
Please read the effbot article or the wide finder discussion before you make incorrect statements.
The GIL is not a problem for concurrent use of Python.
The startup and overhead of Python VM is much less than that of the JVM.
Use multiple python processes and communicate between them using shared memory etc..