Access callback infinite loop in specific case
I think if you add the access login in the form_alter, the user should be redirected properly. IOW something like this: 

function yourmodule_form_alter(&amp;$form, $form_state, $form_id) {  if($form_id == 'CONTENT-TYPE_node_form') {  global $user;
  if(user_access("create slide content")) {
    $allowed_limit = variable_get('allowed_limit', 1);
    $slides = db_query("SELECT nid, count(*) ct FROM {node} WHERE type = :type AND uid = :uid", array(':type' =&gt; 'slide' ,':uid' =&gt; $user-&gt;uid))-&gt;fetchAssoc();
    if ($slides['ct'] &lt; $allowed_limit || in_array('administrator', $user-&gt;roles)) {
      return TRUE;
    }
    else {
      drupal_set_message('You cannot post more than one photography. But you can edit the one you posted below if yo wish to.');
      drupal_goto(drupal_get_path_alias('node/'.$slides['nid']));
    }
  }
}