Okay, I've refactored my code extensively to use this method instead (which does make more sense, now that I realise what it's for!)... unfortunately it still doesn't appear to work. For the purposes of demonstrating how I'm using it, I've created this test case:
http://www.kapowaz.net/files/conditional-validation.html It's a massive simplification on my real working code, but the problem is still demonstrable; namely that even though credit card should only be conditionally required, it is always evaluating as required regardless of the payment method chosen.