I have set up a list with two content types. When I click the New Item button, a dropdown is displayed which contains the two content types. So far so good. However, the forms behind those buttons are incorrect: in both forms, only the columns from the default content type are shown.
If I check the urls of the 2 forms, I can see that the correct content type id is in the querystring. But still, the contents of the form are incorrect.

Are the fields in the form the incorrect fields or is it that fields are missing?
If they are just missing you can try check the field properties in the content type and in the list definition schema to make sure the ShowInNewForm, ShowInEditForm and ShowInDisplayForm properties are correctly set to true.
Another thing you can try, assuming it is not being deployed through a web template, is to export the site with sharepoint designer, import the wsp in visual studio and examine the content types and the list schema