Why is the contact type read only in the summary tab for a contact? The 'contact_type' field is easily edited directly in the database, but I can't find a built in civicrm form to do this.
It isn't allowed and with very good reason! People do not morph into organisations (in my experience), therefore a CRM does not allow it. What is the problem you are trying to solve? Bad import?
Click the Edit button on top of the summary? That will allow you to edit the contact type. Not as nice is the inline edit but it works.