Hey Paul,
I think the method I proposed would be able to achieve a filter range, you merely have to adjust your filter for this purpose. The site I showed you had millions of filter options all determined by the products within a certain catalogue, based on each product attribute. This allowed my client to simply concentrate on products and product attributes and never have to give filtering a 2nd thought (his attributes had to be consistent though).
Just a note, here's what I did to get the attributes on small_product.html.
data-attr='{tag_attributes_json}'
note1: I realise this can now be outputted using liquid, <pre>{{ this | json }}</pre> will give you all options.
note2: I also realise you could use TheBCMan's method and use custom fields 1-4 if you like - this does require your customer to know how to manipulate data though.
Then I read the attributes with jQuery placing each new 'attribute' into an array to build my filter arrays. Yours' may be simpler as you may not have an infinite amount of product attributes or filter criteria.
It's a challenge alright. I wish you the best of luck. And let us know what solution you come up with.
Cheers,
Stephen