I am currently taking a look at this plugin after seeing it demo'd at CiviConLondon.
It works to an extent and seems a very good starting point but..
The first barrier I have come across is that there appears to be nowhere to set 'options' for an API call such as the option 'match': (if you don't/can't/would prefer not to match on ID)
$result = civicrm_api3('Contact', 'get', array(
'debug' => 1,
'sequential' => 1,
'options' => array('match' => "field_to_match_on"),
));
Without this the CiviCRM output always creates new records unless you already have the contact_ID from civicrm before you import.
This lead me onto trying to use "CiviCRM input" to get the ID from CiviCRM and add it to the incoming data where applicable so it can update records instead. This doesn't work as using a previous field to filter 'CiviCRM input' doesn't appear to work. (#15)
The work around is to use mySQL to look up the CiviCRM ID needed to match on. It would be faster/simpler to just use CiviCRM API match facility instead though.