EDIT: The old version of this answer is primarily applicable to Python 2 and early versions of Python 3 since they rely on really old versions of MSVC. If at all possible, the solution now is to use a newer version of Python with its corresponding version of MSVC.
Mixing C runtimes can cause unpredictable crashes. If, for example, one C runtime allocates a pointer and the other C runtime attempts to free it, it'll crash. Generally it's painful but possible to get this kind of thing working right, but if you're able to use a new enough version of Python, mixing compilers isn't necessary at all since newer MSVC versions can do what you need.
Although the Cython documentation discourages it, the latest versions of MinGW-w64 should work.
The warnings about incompatible runtimes should be resolved after MinGW 4.7, but still, be careful.
You can use MinGW-w64 with OpenMP (See this question about how to get binaries), so, in theory, it should be possible to configure Cython to use it.
The MinGW builds project is a good way to get the compilers installed.
You will probably also need to configure distutils to use MinGW, as described in this answer.