Luke,
You could try doing it with the built-in import wizard but it is going to be a daunting task. Your best solution would be to use a third party solution that has parenting and insert-update built-in to it.
Here is a link to a tutorial on how to do the relationships. They key challenge with this approach is it isn't very forgiving if it can't find the match.
blogs.msdn.com/.../crm-2011-data-import-wizard-importing-related-accounts-and-contacts.aspx