Thanks James
It ended up not being any of these (although I did uninstall all themes and plugins before discovering my particular problem).
It was actually a database issue.
At some point in the past, probably quite a while ago, certain entries in the database that were escaped, became non-escaped, and that never made a difference until now.
I run multiple sites off a single install, so I needed to update these escaped values, which included the list of site_admins. I found that only on more recently created sites could I login, which made me suspect this.
Anyways, the effected values in the "wp_sitemeta" table are the meta_values "site_admin", "menu_items" and "allowed_themes"
This probably only applies to old installs, pursue other methods to fix blank admin area first (mine's been around since there was still the wp-inst dir), fresh ones shouldn't have this problem.
Step-by-step to update these....
In PHPAdmin....
Use a search like this (replace ' with ` in the following):
SELECT * FROM 'wp_sitemeta' WHERE ('wp_sitemeta'.'site_id' = 2 OR 'wp_sitemeta'.'site_id' = 3 OR 'wp_sitemeta'.'site_id' = 4 OR 'wp_sitemeta'.'site_id' = 5 OR 'wp_sitemeta'.'site_id' = 6 OR 'wp_sitemeta'.'site_id' = 7 OR 'wp_sitemeta'.'site_id' = 8 OR 'wp_sitemeta'.'site_id' = 9 OR 'wp_sitemeta'.'site_id' = 10 OR 'wp_sitemeta'.'site_id' = 11 OR 'wp_sitemeta'.'site_id' = 12 OR 'wp_sitemeta'.'site_id' = 13 OR 'wp_sitemeta'.'site_id' = 14 OR 'wp_sitemeta'.'site_id' = 17) AND ('wp_sitemeta'.'meta_key' = "allowed_themes" OR 'wp_sitemeta'.'meta_key' = "menu_items" OR 'wp_sitemeta'.'meta_key' = "site_admins") ORDER BY 'wp_sitemeta'.'meta_key' ASC LIMIT 0,1000
which will bring up all the necessary values...
everything that looks like this:
a:1:{s:7:\"plugins\";s:1:\"1\";}
should change to this:
a:1:{s:7:"plugins";s:1:"1";}
everything like this:
a:1:{i:0;s:5:\"admin\";}
should look like this:
a:1:{i:0;s:5:"admin";}
ie. remove all the slashes
Save your settings and you should now be able to login at all your sites.