There is a patch to make the Scheduler "Publish On" date render itself as a field: http://drupal.org/node/1203958

This presents a new Checkbox called "Show Scheduling options in vertical tabs", which you can **uncheck** to display as a field.  Then you give it some weight so it shows up where you want it to.

![Scheduler Configuration][1]
![Scheduler rendered field][2]

It's been working for me in production for a month or so.


**EDIT:** Here's a better way to make this happen with both Scheduler and Rules.

 1. Create a Rule, "After saving new content"
 2. Add a condition of "Content is of type"
 3. Add an "Execute PHP" action with this:

    $node->publish_on = strtotime("[node:field-datefield-here]");
    scheduler_node_insert($node)

 4. Create a Rule, "After updating existing content"
 5. Add a condition of "Content is of type"
 6. Add an "Execute PHP" action with this:

    $node->publish_on = strtotime("[node:field-datefield-here]");
    scheduler_node_update($node);

  [1]: https://i.sstatic.net/hd1uC.png
  [2]: https://i.sstatic.net/2IZjL.png