Something like this:
if (UICamera.lastHit.collider != null && UICamera.lastHit.collider.gameObject != UICamera.list[0].gameObject) { // do something }
However the proper solution is like I suggested -- using NGUI events all the way, not your own Input checks. This hack wouldn't be necessary if you stuck to NGUI events. NGUI is fully capable of sending events to all objects, not just UI but 3D as well (if you attach UICamera to your main camera too).
How is it rude and dismissive?
How do you physically detect a finger hovering over a button using touch-screen devices? You can't.
Similarly, how is "is over UI" check supposed to work with you have more than one active touch, one is interacting with UI and the other does not? Which one should be checked to be is over UI? Keep in mind if you need this functionality with touch-screen devices, then you can always loop through active touches: UICamera.activeTouches. Each of those has a "pressed" object set which tells you the game object where the touch started.
Using NGUI input is necessary because it ensures that NGUI's events are filtered properly, going to whatever is on top and preventing whatever is below the widgets from receiving events. You know, the stuff you now have to do manually using the "is over" checks.
Using NGUI system all the way removes the need to do it entirely -- that's exactly the point.