When your designing your form think of it as how am I going to get the user from A to B in the easiest and most pleasant way possible.
I would consider breaking the form up into steps via javascript so the form does not look lengthy and daunting on the user.
Try and keep them focused on the fields by moving any labels inline and the descriptions to the right hand side of the form and to the side of the forms elements and only show when the user focuses on a paricular form element or even consider using a pop over on an info icon.
Try and fill out the form for them on things you can gather like their location eg. Suburb, postcode and or suggest with 'Autofill with somesuburb' link.
Use auto suggest to help them type less.
try and keep it compact so the user does not have to scroll up and down the page.
Be direct and keep your words minimal in any error messages without sounding harsh, rude or condesending and especially without sounding like a robot on repeat. eg. Required...Required...Required...
Avoid using the word required on the label, rather use (optional) on any fields that are not required.
Don't try and be unique or re-invent the wheel like your trying so hard to be cool with new fancy names for your labels, be straight to the point and use what people already know these fields as and that speaks to everybody at every level (eg. children, parents, grandparents).
Use labels rather than placeholder text only if your considering this method. It always annoys to have to focus out to see what you need to type in an input field and use placeholder text as a way to hint what to write to the user.
Try and keep checkboxes and radios on one line.
Rather than thinking of all the grand stuff you can put in your form, think what can I take out to make it or does the user actually need to specify that.
Hope that gets you started!