that's great! You might consider posting the final code so everyone on the forum could benefit from the solution.
Also, if you call gc.collect and waitForPendingFinalizers in main loop, it might slow you down unnecessarily. If your previous code worked for 900 features before running out of memory, maybe calling the collect and waitForPendingFinalizers every 100 features or more might be just as good and much faster. I would be interested in knowing what the difference would be.
Also I was wondering about Neil's comment about esri's ComReleaser, I use it all the time and never really thought about it, it seems to work ok (I like to use it with a 'using' block.)