Вариантов куча. Разница в том, в каком месте пользователь твоего скрипта должен что-то дописывать сам. Идея в том - и в этом смысл универсального скрипта, - что пользователь не должен править твою функцию вообще. Править, что-то дописывать в checkform.js в этом смысле вообще нельзя. Например, улучшенный вариант и его использование могло бы быть что-то типа такого (вызов функции):
checkForm(form, {
    username: {
        check: 'required length',
        min: 4
    },
    email: 'required email',
    site: 'required url',
    phone: {
        check: 'regexp',
        pattern: '^\(\d{3}\) \d{4}-\d{3}$'
    }
})
 и тд.. Конечно, кода будет больше, но зато можно использовать повторно. Или правила проверки можно привязывать к элементам формы в атрибутах.