Here's a very good article by LukeW on form layout:
http://www.lukew.com/resources/articles/web_forms.html
The main points summarised
- If completion time is to be maximised and data familiar to users, vertical alignment of labels and input fields is most efficient
- for this layout field labels need to be bolded to bring them to the foreground
- When data is unfamiliar to users or does not fall into easy to process groups (e.g. Address), left-justifying input fields works best
- this can increase the space the between label and input field but left-to-right reading culture prefers hard edges on the left (quick scanning of required data)
- try to avoid background colours and rules if possible (useful only when used to point out related groupings of information; otherwise they only constitute cognitive processing overhead)
- buttons should always be left-aligned with input fields
- primary action button should stand out visually through colour and bold type