I've been playing around with Windows hooks and it doesn't seem to help much in regards to lag (very noticeable when OS cursor is visible). The problem lies in the Windows message proc of the application driving it... in the case of Ogre apps (or the OISConsole app where there is a sleep call), the winproc handling input just moves to slowly.
Which has led me to the conclusion that OIS for win32 may probably need to move instead to using its own window (top level, hidden, offscreen, 1x1 size kind of deal), that runs in its own thread... this thread would use GetMessage() to yield CPU time, while letting it handle a msg as soon as it comes in. With the widespread use of multi core systems, it makes sense nowadays to make use of it. I'm not 100% sure a top level window can also capture mouse/keyboard messages, but it is something I will look into now.