Can I use entityreference module with my custom entity to display it?
I figured this one out. Entityreference runs entity_access() before returning $items:

$items[$id][$delta]['access'] = entity_access('view', $field['settings']['target_type'], $target_entities[$item['target_id']]);


To get this working, you need to set the 'access callback' property in hook_entity_info(), which is an extended property that is checked by entity.module, not by core's entity functionality. So, for example:

&lt;?php
return array('my_entity' =&gt; array(
  'label' =&gt; t('My Entity'),
  'controller class' =&gt; 'MyEntityController',
  'base table' =&gt; 'my_entity',
  'uri callback' =&gt; 'my_entity_uri',
  'load hook' =&gt; 'my_entity_load',
  'fieldable' =&gt; FALSE,
  'label callback' =&gt; 'my_entity_label',
  'access callback' =&gt; 'my_access_check',
  'entity keys' =&gt; array(
    'id' =&gt; 'id',
    'label' =&gt; 'name',
  ),
);

function my_access_check($op, $entity, $account, $entity_type) {
  // ...do something
  return TRUE;
}
?&gt;