Hook form alter to check date field is empty or not
The last one should be correct if the form has a field called field_start_date.

You fetch values from the form_state like this:

$form_state['values']['FIELD_NAME'];


To see which values are available in the form_state you can use the devel module to print the values from the form state using dpm($form_state['values']).

UPDATE: You can't really use drupal_set_message() to print arrays, you must use dpm, kint, print_r or other functions that allows you to debug an array.

You can use e.g dpm($form_state['values']['field_start_date']) to see where the values live.