Form element layout module (fel.module) provides the basic support for altering the primitives of a single form element: Title, description and the input element. It introduces a new attribute #description_display that in tandem with the existing #title_display allows for some interesting configurations.

By default it doesn't do anything, so enabling this module won't do anything until you tell it to:

    $form['example'] = array(
      '#type' => 'textfield',
      '#title' => t("Example input"),
      '#description' => t("Example description of what this element does."),
      '#description_display' => 'before', // Default is 'after'.

This will render the description before the input element and this works for all element types core provides.