Hi Paul. I have both mods working together with no problems. It's easy to do.

You first need to insert the following JavaScript function towards the top of your tpl_checkout_account_default.php file, so it looks like this..

Code:
<?php
// Checkout Account Page Template
// Mod Created by C.J.Pinder / Glint Systems Limited ( http://www.glintsystems.co.uk )
// Copyright 2003-2007 Zen Cart Development Team
// Portions Copyright 2003 osCommerce
// Released under the GNU Public License v2.0
?>
<div class="centerColumn" id="checkoutAcctDefault">

<h1 id="checkoutAcctDefaultHeading"><?php echo HEADING_TITLE; ?></h1>
<p id="checkoutAcctDefaultInfo" class="biggerText"><?php echo TEXT_CHECKOUT_ACCOUNT_INFO; ?></p>
<?php if ($messageStack->size('create_account') > 0) echo $messageStack->output('create_account'); ?>

<?php echo zen_draw_form('create_account', zen_href_link(FILENAME_CHECKOUT_ACCOUNT, '', 'SSL'), 'post', 'onsubmit="return check_form(create_account);"') . zen_draw_hidden_field('action', 'process') . zen_draw_hidden_field('email_pref_html', 'email_format'); ?>

<script type="text/javascript">

function capitalize(f,m) {

if (m) /*cap words*/ {
	var temp, tempC, pre, post, strlen;
	temp = f.value.toLowerCase();
	stringLen = temp.length;
	  if (stringLen > 0) {
		for (i = 0; i < stringLen; i++) {
		  if (i == 0) {
			tempC = temp.substring(0,1).toUpperCase();
			post = temp.substring(1,stringLen);
			temp = tempC + post;
		  } else {
			tempC = temp.substring(i,i+1);
			if (tempC == " " && i < (stringLen-1)) {
			tempC = temp.substring(i+1,i+2).toUpperCase();
			pre = temp.substring(0,i+1);
			post = temp.substring(i+2,stringLen);
			temp = pre + tempC + post;
		  }
		}
	  }
	}
  } else /*cap all*/ {
    var temp = f.value.toUpperCase();
  }
  f.value = temp;
};

</script>
Then for each component on the page which you want to validate, change to something like this (firstname used as example)..

Code:
<?php echo zen_draw_input_field('firstname', '', zen_set_field_length(TABLE_CUSTOMERS, 'customers_firstname', '40') . ' id="firstname" onchange="capitalize(this,1);"') . (zen_not_null(ENTRY_FIRST_NAME_TEXT) ? '<span class="alert">' . ENTRY_FIRST_NAME_TEXT . '</span>': ''); ?>
The same format above can be reapplied to lastname, streetaddress, suburb, city etc

The postcode is the only component which requires a different type of change..

Code:
<?php echo zen_draw_input_field('postcode', '', zen_set_field_length(TABLE_ADDRESS_BOOK, 'entry_postcode', '40') . ' id="postcode" onchange="capitalize(this,0);"') . (zen_not_null(ENTRY_POST_CODE_TEXT) ? '<span class="alert">' . ENTRY_POST_CODE_TEXT . '</span>': ''); ?>
That's it. I would have posted my whole file as an attachement but I have a few other mods added so it prob wouldn't have been much use. Hope that helps.