Why you have the problem:
What you forgot to mention in your question is that you are trying to run it under IIS with ISAPI > ISAPI_WSGI (or FastCGI on IIS 7/6 with flup as FastCGI wrapper for WSGI).
It's truly an execute permission issue on c:\windows\system32\cmd.exe
I had exactly same problem on IIS 6. Played with pool settings, thinking that setting the pool user to "Local System" or something similar would fix it. Regardless of what user I set the pool to, I would always get Access Denied. I foolishly assumed there is something wrong with cPython pipes, cause running commands under IronPython on the same machine worked.
Here is how you fix it:
A.
Relax user permissions on either IIS service or on c:\windows\system32\cmd.exe
(Relaxing permissions on application pool, with tight permissions on IIS process did not help me. My guess is that ISAPI > ISAPI_WSGI runs with permissions limited to those of IIS process.)
User running IIS (Web Publishing) service must be added directly, or be in at least one group that has read, execute permissions on c:\windows\system32\cmd.exe
Things I did not try: I wonder if instead of changing user permissions on IIS service, changing the user behind "Anonymous" would work.
B.
If you are serious about making it work on Windows, contemplate ditching cPython for IronPython + NWSGI (look for it on CodePlex) I use NWSGI for simple WSGI apps and CAN run subprocesses with a subprocess.py specifically written for IronPython. (it's here: http://bitbucket.org/jdhardy/code/src/126ce1f8fddd/subprocess.py Check out other repos by same jdhardy. He has some patches specifically to make Django work on .Net, IronPython.)