This issue should be resolved in R4. I just tried the following script and the mouse state is properly updated when the button is released outside the window:
Code:
import viz
import vizact
viz.go()
def PrintMouseState():
print viz.mouse.getState()
vizact.ontimer(0.1,PrintMouseState)
Are you able to reproduce the issue with this script in R4?