As to having the delivery date required - in includes/modules/checkout_shipping.php

change

//BEGIN Order Delivery Date
if (zen_not_null($_POST['order_delivery_date'])) {
$_SESSION['order_delivery_date'] = zen_db_prepare_input($_POST['order_delivery_date']);
}
$order_delivery_date = $_SESSION['order_delivery_date'];

// END Order Delivery Date

to

//BEGIN Order Delivery Date
if (zen_not_null($_POST['order_delivery_date'])) {
$_SESSION['order_delivery_date'] = zen_db_prepare_input($_POST['order_delivery_date']);
} else {
$messageStack->add_session('checkout_shipping', ERROR_PLEASE_CHOOSE_DELIVERY_DATE, 'error');

zen_redirect(zen_href_link(FILENAME_CHECKOUT_SHIPPING, '', 'SSL'));
}
$order_delivery_date = $_SESSION['order_delivery_date'];

// END Order Delivery Date

Add the error to the includes/language/english/your-template/checkout_shipping.php:

define('ERROR_PLEASE_CHOOSE_DELIVERY_DATE', 'Please choose a delivery date');