Interesting. :-) So, I've never tried hooking up a cisco to a windows machine, but wouldn't have expected this, exactly. There are two lengths in an OSPF packet (just like in TCP), one of which describes the length of the OSPF data, and the other of which describes the length of the entire IP packet. Thus, it's something like this:
IP(length of IP)(OSPF(length of OSPF)..)
If you add the length of the OSPF information to the length of the IP header, you should come up with the length of the IP packet, in theory. Well, the two implementations are computing their lengths differently, or something, because they are both complaining about the two lengths not matching. I could kindof understand it on the windows side. OSPF does use a set of extensions to the OSPF hellos called link local signalling that would make these two not match (intentionally). I don't know about the cisco giving those error messages for the windows router, though....
You might try turning LLS off, depending on the version of code you're on:
http://www.cisco.com/en/US/products/sw/iosswrel/ps5207/products_command_reference_chapter09186a00801a807f.html#wp1036468
is how you can turn it off, to see if that's the issue.
:-)
Russ.W