I'd like to provide a form where anyone can submit a new job opening. The goal is to allow anyone to submit a subset of fields for a jobs content type. Once submitted, the site admin would come in and fill in the rest and publish the new node. I've played with allowing anonymous access to create new nodes of the content type, but I just don't like the way the form looks and I don't want the user to see all the fields. Is there a way to hide some fields and set the published marker to unpublished for anonymous users and protect the form with a captcha or is creating a custom form the way to go?
I guess the Field Permission module is what you need. It allows you to set finegrained permissions to fields. Once installed you can set the permissions to edit, view etc to the field on the manage fields tab of your content type...
You can use "field permission" module to set field-level permission for any user roles. Field permission : http://drupal.org/project/field_permissions
You can create a template file for your node edit form to modify it.
There is a captcha module in drupal which allow functionality to enable captcha for a form.