Had some "great fun" with SharePoint over the last few days, basically when I copied some code on creating a Content Type to test in my environment. I noticed that the Content Type wasn't available on a Form Library and looked at the Parent Content Type in the user interface and noticed it was Item and someone told me it needed to be Form.
I couldn't see a property to set what the Parent type from 'Item' to 'Form'. This article explains it in further detail which means modifying the ContentTypeID although Andrew May had a bit more around it...especially about not just replacing 0x0100 with 0x0101 when changing to Document Parent Type....it also needs a 00 appended to it. It's not quite clear in the MSDN article. There is a good diagram that shows the base hierarchy types to help find parent types. The SharePoint 2007 Content Types Viewer is a great tool for viewing the Content Types in a portal.
Also another neat explanation Sezai bounced me in an email:
If you create a content type with the regular SharePoint user interface, and then view the content types page then you can get it’s ID from the URL.
So if I create a new content type with the site ui and select the parent as Document I get this :
so it’s content type ID is :
Also if I create a content type with a parent of Item it generates this content type ID :
So, it seems like you just need two more characters at the end of your document content type for it to work.
The entire content type parent inheritance chain makes up the id, so for example my custom page layout content types are this long :
Go up the parent chain Article Page