How to make front end form only accept certain values

you will probably want to use term_exists http://codex.wordpress.org/Function_Reference/term_exists to check if the term is “valid”. Probably worth checking how good is that API with mismatched cases.

Another option is to use AJAX to populated your input control base on the user input. I am almost sure there is some jquery plugin for that, and then hopefully you should be able to use a hidden input to contain the term IDs. This might not be very easy to implement on the server side depending on the details of the values you have to return in each AJAX request.

And what might be the best option if you don’t care about that specific page to get a little bloated, is to create an array in javascript that contains all the terms and verify the input against it before sending it to the server (and again send only the term id). You probably have a jquery plugin for this as well, and all that you will need to do on the wordpress side is to generate the javascript array and inject it into the HTML.