What is "field_?"? It's not listed anywhere in your submission fields.
What you have available in $_POST will be 'name', 'email', 'category', 'message', 'captcha', and possibly 'send_contact'. Given the argument, I'd say that should be using $key (representing 'category').
This return call isn't correct. After the initial instruction it then attempts to set a variable, but it will never reach that point in the code. So that can be removed. Simply use this for a return:
return (isset($_POST[$key]) && isset($to[$_POST[$key]]) ? $to[$_POST[$key]] : $default);
Wait a sec, since you're already providing the $key a value that is $_POST['category'] and not just 'category', than you can use this (which is pretty much what you had):
You'll need to make sure you use an isset on the POST prior to calling the function though.
return (isset($to[$key]) ? $to[$key] : $default);
If that still doesn't work, make sure you check the results of the call to the emailswitch function.