The problem with these is that we can only use expressions to compare fields associated with a given file. We cannot compare a field from one file with a field from another.
This means that we must resort to using smartlists and exclusions to get as close as possible, then do the rest the hard way.
The closest thing that I know of is using a combination of ~dup and ~nodup, like so:
~dup=[Artist] ~nodup=[Genre]
Unfortunately what this will return is actually a list of the artists that have multiple genres associated with them, but it only lists one file for each artist. But, from here you can at least use the "Locate Artist" right-click command or arrow-button to go and find the offending files.
You are correct that the solution to this problem cannot be realised using expressions. What you're search will actually return there, is one example of every genre that exists in the library.
What you want is:
[media type]=[audio] ~nodup=[artist],[genre] ~sort=[artist] which will leave one example of each "[artist]/[genre]" combination, including empty genres, that exist in the library. From there, clicking on the 'linkable columns' arrow to get at the full list of artist tracks, as you described, is quick and easy.
joh, this same logic fits for you, simply adjust the library fields in the search rule to fit your needs.
regards,
-marko.