Django not using correct Python instance from within virtualenv
Are you running ./manage.py shell or python manage.py shell? It can make a difference.
Using the ./ version uses the shebang line for the interpreter and normally results in using the system-level interpreter. As you've seen yourself, running python uses the virtualenv's version, so python manage.py shell should as well.
I have created a virtualenv for developing in Django but Django is not using the correct instance of Python.  Here's what I've found out:

C:\Python27 is not in my path.  If I run python from a command prompt it says it's not recognized
When I start up the virtualenv, run python and check sys.executable it does point to the virtualenv's instance of python and sys.path is also pointing to the correct place
When I run manage.py shell from within the virtualenv and check the sys.executable and sys.path they are both pointing to the C:\python27 installation

Any ideas as to what's going on?