I've tested it with 2.7.0 release version (revision 69858 - all line numbers below are from that revision). Still the same error.
I debugged it, the exception occurs at
Snoop.exe!Snoop.SnoopUI.FindRoot() Line 648 + 0x3b bytes C#
Snoop.exe!Snoop.SnoopUI.Inspect() Line 330 + 0xa bytes C#
Snoop.exe!Snoop.SnoopUI.GoBabyGo() Line 111 + 0x10 bytes C#
The problem is that this stack trace (actually, call to Inspect on second line) occurs before checking if Snoop needs multithreaded mode (which is at lines 125-161, right after call to Inspect). FindRoot (first line on stack trace) depends on the fact that
SnoopModes.MultipleDispatcherMode already correctly determined. Thus said, if I add line
SnoopModes.MultipleDispatcherMode = true;
at the beginning of GoBabyGo() thus effectively hardcoding it - FindRoot() doesn't throw (it is still warns user about absence of root visual in my case, but returns without exception) and snooping works - i.e. dialog about multithreaded UI appears and afterwards
everything seems working.