From a quick googling, it seems that at least some GLUT implementations, freeglut and openglut implement glutMainLoopEvent(), which is supposed to be called periodically from your other mainloop.
A second alternative would be to detach OpenGL processing from the rest of your program by using a separate thread to handle OpenGL. But then you need to make sure that all OpenGL-related resources get allocated from that thread. At least, I remember some stories of debugging two threads going tag-team on OpenGL handles in the early days of consumer OpenGL.