How to restrict creation of content based on unique field values?
I'm not aware of an existing module with that functionality, but it wouldn't be too hard to code your own custom module to do the job.

This is an example using the 'article' node type:

function MYMODULE_form_article_node_form_alter(&amp;$form, &amp;$form_state, $form_id) {
  if (empty($form['nid']['#value'])) {
    $form['#validate'][] = 'MYMODULE_article_node_form_validate';
  }
}

function MYMODULE_article_node_form_validate($form, &amp;$form_state) {
  global $user;

  // See if this user has already created a piece of content of this type.
  $args = array(':uid' =&gt; $user-&gt;uid, ':type' =&gt; 'article');
  $count = db_query('SELECT COUNT(nid) FROM {node} WHERE uid = :uid AND type = :type', $args)-&gt;fetchField();

  // If they have, check for another node created by the user with the same field value
  if ($count &gt; 0) {
    $query = new EntityFieldQuery;
    $query-&gt;entityCondition('entity_type')
      -&gt;entityCondition('bundle', 'article')
      -&gt;propertyCondition('uid', $user-&gt;uid)
      -&gt;fieldCondition('field_some_field', 'value', $form_state['values']['field_some_field'][LANGUAGE_NONE][0]['value']);

    $results = $query-&gt;execute();

    // If we have a result, invalidate the form.
    if (!empty($results['node'])) {
      form_set_error('field_some_field', t('Error message here'));
    }
  }
}


That'll need a bit of massaging to match your exact situation, but it should be a good place to start.