What's the best way to delete all content without a content type?
Due to an error during migration, some of the content has been left
  hanging without a content type and did not port over correctly


If you're comfortable writing code you could write an SQL query to look for nodes or entities without a type set -- and output or save their IDs to a list. You may be able to use EntityFieldQuery for this but it may blow up, I'm not sure.

Once you have the IDs of content missing it's type you could try to use Drush Entity on your site to delete the entities. It supports deleting a list of entities by their ID (I assume in the Node table). Below is an excerpt from entity.drush.inc

  $items['entity-delete'] = array(
    'description' =&gt; 'Delete entities.',
    'arguments' =&gt; array(
      'type' =&gt; $type,
      'nids' =&gt; $nids,
    ),
    'options' =&gt; array(
      'json' =&gt; $output_json,
      'bundles' =&gt; $bundles,
    ),
    'examples' =&gt; array(
      'entity-delete' =&gt; '.',
      'entity-delete node 64' =&gt; '.',
      'entity-delete node --type=story' =&gt; '.',
    ),
    'aliases' =&gt; array('ed'),
  );


So you could try to take your IDs and issue the command:

drush entity-delete node -v --nids=&lt;list-of-nids-seperated-with-commas&gt;


If this fails try:

drush entity-delete node --debug --nids=&lt;list-of-nids&gt;


Obviously you could try to do this all by hand with a query, and using node_delete() for instance, but I'm trying to find  you a slightly less programming intensive solution.

EDIT

1) ALWAYS BACKUP YOUR WEBSITE FILES + DB FIRST BEFORE ATTEMPTING DISASTER RECOVERY.

2) If the data is somehow improperly save and fragmented across disjointed tables good luck -- I've fixed mess-ups like this but end up scanning tables visually by hand and dropping obsolete fields or field_instances for example.