Data Validation (List) will already give the user an error if they attempt to enter a value that is not on the designated list.
How are you trying to use the =B$6<>"" formula? You could set up a If X="TRUE" then Y sort of check for the result of the initial formula.
EDIT: If that were to be how you would use the initial check, you would need to change the formula to =IF(B$6<>"", "TRUE", "FALSE") or whatever other true/false responses you want to work with.