Just so you'll understand the development process a bit better:
--tdm cribbed together changes that lupohirp, arjen, and mikegapinski had made in order to create device and vendor trees that would compile into a working ROM.
--now each dev is working from that base, and testing out changes on their own, and sharing what they find with the others
--fix one issue, and it may cause another issue, and that is happening more often with this port due to the extreme changes to Android 4
--there are basically three branches to the development tree:
--kernel -- we have been using the Gingerbread kernel from the OS, and it's variants so far, but tdm and BobZhome are working on ones built specifically for the OV
--init processes -- these are the steps the phone goes through when booting up, having a single step out of place can cause major issues, and adding one in could allow it to work while breaking another
--frameworks/internals -- these are the parts that run the phone once booted, many are not made for our armv6 processor, so work is ongoing on porting the code over to our architecture
We have a working kernel, and new ones in development, so this isn't a huge part of the issue atm
We have 80% of the init process solved, but each addition can cause new issues to arise, so call it 65% done
We have most of the internals working, but a couple of sticking points will take the longest, primarily hardware acceleration for graphics and camera/video playback. Work on the camera is coming along, but it takes changes to the kernel and the internals, so it will take the longest. And no, we can't just use the old camera this time, that would take almost as much work to back port as it will take to get the ICS camera working.
Remember, it takes 30 minutes to an hour to compile any single change (well some can be compile separately, but only if they standalone). So a single forgotten semicolon can take a full day to fix.