Just came across this issue on my current project. I would like to contribute by posting my solution. NGUI is AWESOME

In UICamera.cs I made the following changes
public static bool ObjectWasHit;
void FixedUpdate ()
{
if (useMouse && Application.isPlaying && handlesEvents)
{
ObjectWasHit = Raycast(Input.mousePosition, out lastHit);
if (!ObjectWasHit)
hoveredObject = fallThrough;
if (hoveredObject == null)
hoveredObject = genericEventHandler;
for (int i = 0; i < 3; ++i)
mMouse.current = hoveredObject;
}
}
Then elsewhere I do
void SomeInputHandler()
{
if(UICamera.ObjectWasHit)
return;
}