@David Fraser - The launchpad bug report for the E220 is at bug #449394 and is probably a better place to work on this. Bug 446146 became too long and confusing a long time ago, even before the fix for the E169 (E620) was released.
The E220 bug report contains a link to an E220 firmware in comment 10. After upgrading their modem's firmware to the version available at this link, many people reported their E220s were now working. If you have a Vodafone branded modem you may want to use the firmware linked to in comment 24 of that bug instead. You may also need a 2.6.31-15 or later kernel, but you mentioned you are using 2.6.31-17 so you should be fine in that regard. There a few other workarounds/tricks among the various comments too. Also see comment 31 in that bug.
Unfortunately the upstream bug at http://bugzilla.kernel.org/show_bug.cgi?id=14499 which you referred to seems to have stalled, although perhaps that is due to the success of the firmware updates. It seems that Huawei's original firmware was not fully compliant with the USB specification set by the USB Implementers Forum (USB-IF). There is short page on the USB-IF at http://en.wikipedia.org/wiki/USB_Implementers_Forum if you interested.
>Also of interest is that the same modem works successfully on a friend's machine with the same kernel on karmic (22.214.171.124.30)
That is very interesting. When you say "the same modem", do you mean your E220, or does your friend also have an E220? The answer to that question should probably go into bug #449394. If it's your E220 behaving differently on the two different E220 machines, please include the output of dmesg from both machines along with your answer.