This is the first Google result for "drupal can't delete node with empty required field," and it seems the OP is having my exact problem, so I am posting my solution here. No other results on Google gave me a solution to my problem.
In order to recreate this issue in e.g. a vanilla Drupal install, make a field in a content type required, such as the Body. Create a node of that content type. Then try to delete that node after removing all content from the Body. Drupal doesn't let you do it because it always validates form #submit elements unless you tell it not to. This is a problem if e.g. nodes are programmatically created with a lot of required fields empty.
/**
* Implements hook_form_alter()
*/
function mymodule_form_alter(&$form, &$form_state, $form_id) {
if (isset($form_id)) {
if ($form_id == 'NODETYPE_node_form') {
$form['actions']['fdelete'] = array(
'#type' => 'submit',
'#weight' => 999,
'#access' => user_has_role(user_role_load_by_name('administrator')->rid),
'#value' => t('Force Delete'),
'#submit' => array('mymodule_force_delete'),
'#limit_validation_errors' => array(),
);
}
}
}
function mymodule_force_delete(&$form, &$form_state) {
unset($_GET['destination']);
drupal_goto("node/{$form_state['node']->nid}/delete");
}
This solution works because node/%/delete is just a prompt to delete the node without triggering any validation of the node content.