First you have to now which object was “selected”… than you should transform the mouse-position on the projection plane to the worldcoordinates of the mouse on the projection plane via gluUnproject. Than you can cast a ray from the camery-eye through this point and see at which point it intersects with your draggable geometry.
So you have the initial position of the mouse on your geometry. Than you can calc the above mentioned ray on every mouse-dragged call.
Than there is a problem: You don’t know where to place the object on the new caled ray. you could for example calc the distance fomr eye to the intersecting point and apply this length to your new ray. (you would move your object on a big virtual sphere in this case). you could also just use the same z coordinate (if it fits for your setup.
Finally you have 2 points one on your “before”-ray one on your “actual”-ray. Your translation vector would be p2.sub(p1). Of course you could do some rotaing and stuff to ensure you see the geometry from the same perspective.
I hope this helps…