How to manage a large database when upgrading from 2.0 to 2.1
In my specific case - upgrading from 2.0.2551 to 2.1.2570 - the issue was caused by there being millions of rows in the craft_entryversions table. One of the migrations in the update needed to loop through every row in that table and do something to it and therefore it took ages.

Simply emptying that table solved the upgrade process for me.

Caveats

Obviously this deletes all your entry versions...so, each entry will just exist at its last known 'live' state. This wasn't a problem for me - but might be for you. 

Its worth noting that this shouldn't affect any drafts users might have made as they are stored in a separate craft_entrydrafts table.

Thanks to Fred Carlsen for helping me think aloud...