When you access a field object using ths "this.getField)" method, the method either returns the filed object or a null value. You can test for the null returned value to find the error and not kill the script. And since it pops an alert message when there is a bad field name, one does not need to open the JavaScript console.
// document level function;
function GetField(cName) {
// return the field object for cName or return a null value;
var oField = this.getField(cName);
if(oField == null) app.alert("Error accessing field " + cName), 0, 0);
return oField;
} // end GetField function;
// custom JavaScript field calculation;
event.value = ( GetField("PLRegTotal").value * GetField("RegPlumberLaborRate").value ) + ( GetField("HRegTotal").value * GetField("RegHelperLaborRate").value ) + ( GetField("PlOTTotal").value * GetField("OTPlumberLabor").value ) + ( GetField("HOTTotal").value * GetField("OTHelperLaborRate").value );
Using a document level function lets me use the function anywhere within the form.
If any of the fields used in the script are the result of a calculation, you should check the field calculation order. This is different from reading and tab ordering.
If you can post a link to the form then we might be able to find other errors.
You should be aware that JavaScript is an interpreted language and as soon as there is one error found it stops working. You fix that error, and the next error will stop it dead.