HTML head elements are defined in 2 places.
First one, easiest to access, is your theme's `html.tpl.php`.
In Professional Theme relevant part looks like that:<head>
<meta http-equiv="X-UA-Compatible" content="IE=Edge" />
<?php print $head; ?>
<title><?php print $head_title; ?></title>
<?php print $styles; ?>
<?php print $scripts; ?>
<!--[if lt IE 9]><script src="http://html5shiv.googlecode.com/svn/trunk/html5.js"></script><![endif]-->
</head>
So, here you can put title before other headers. It's wise to leave CSS and JS parts at the end, in the order specified.
If you feel you need to reorder what's in `$head` variable,
it gets more tricky. This variable is generated by Drupal core, and then altered by modules and themes. Good thing, your theme will be the last accessing it. For Drupal 6, in template.php
define THEMENAME__preprocess_page(&$variables), and alter or reorder $variables['header']
as you please. Keep in mind that it may break other modules, especially if you will remove things. Reordering is relatively safe, adding is usually safe, removal is risky.
For Drupal 7 see answer by Cliveanswer by Clive. THEMENAME__preprocess_page(&$variables) would still work, but 7 provides more direct solution to your problem.