Get users by custom field and field type
You'll need an EntityFieldQuery for that:

$query = new EntityFieldQuery();
$query-&gt;entityCondition('entity_type', 'user')
  -&gt;fieldCondition('field_id', 'value', $field_id);


There's no native way to query by type of field. To do that you'll need to use the EntityFieldQuery::addTag() method to add a custom tag to the query, and then use hook_query_TAG_alter() to manually join the field_config table into the query before it's run.