James Bach has a Perl script that not only generates all combinations of variables for a testing situation, but reduces this set down to a manageable size that still provides good coverage. I've done some Ruby stuffs to generate all combinations (nothing fancy there), so I'm interested in this tool which claims:
to try all combinations of 10 variables with ten values each would require 10,000,000,000 test cases. Allpairs only requires 177 cases.
Download from this page