I think you have to make your own validation function instead of using the one that comes by default and supports #required.
Use #access (not #hidden) to hide the field.
Then in your validator, check to see whether it's OK that the field is not filled in, and notify as needed.
-Randy
When setting the #type = hidden
The field is hidden, but when trying to submit the form I get an error about the fields being required.
Looking at the $form dump, I see that the select field has a default value. (a term id).
I tried changing the Required to false when hiding but then the field looses its value.