The issue seems to be I'm using an older version of emgu, and was going by the 2.4 docs for emgu in which the above should work.
In the version I'm using (2.2), the following works:
var min = new Hsv(103, 33, 254);
var max = new Hsv(125, 35, 256);
var thresh = hsvImg.InRange(min, max);
CvInvoke.cvShowImage("thresh", thresh);
instead of checking by <= and >= it's using < and >.
It's my fault for accidentally clicking the wrong package in NuGet... more reason to always use the command line ;).