How to load a taxonomy term (or entity) by field value?
As specified in the EntityFieldQuery documentation. It is not possible to query across multiple entity types. It is no possible to query all the terms with a specific field value as this would require querying both vocabulary-&gt;vid and field_id-&gt;value.

To load a taxonomy term by field value is possible to get all the entities that have that value:

  $query-&gt;entityCondition('entity_type', 'taxonomy_term')
    -&gt;fieldCondition('field_id', 'value', $IDtoFind, '=');


Using -&gt;fieldCondition('field_id', 'value', $IDtoFind, '=') and -&gt;propertyCondition('vid', $section_vocab-&gt;vid) in the same query would produce an empty result.  

Solution

For the code in the question this would work, based on that field_id is used only one vocabulary and it value is unique. 

&lt;?php
// Get taxonomy term by field value
$section_vocab = taxonomy_vocabulary_machine_name_load('section');

$sectionID = NULL;

if($section_vocab) {
  $query = new EntityFieldQuery();
  $query-&gt;entityCondition('entity_type', 'taxonomy_term')
    -&gt;fieldCondition('field_id', 'value', $IDtoFind, '=');
  $result = $query-&gt;execute();

  if (!empty($result['taxonomy_term'])) {
    // Set the internal pointer of an array to its first element
    reset($result['taxonomy_term']);
    // Get the key value for the first item
    $termID = key($result['taxonomy_term']);

  }
}