I've initialized gluProject like this -
There's your error right there. OpenGL is a state machine. There's no one-time-initialization. You need to fetch the matrices and viewport at the very time the OpenGL state machine is in the state you want to unproject to. If you fetch them e.g. right after context creation, you'll just get identity matrices and a viewport that may not resemble what you later got.
If your desire is to just draw a point at a specific location, look at radical7's answer.