Spry validation is always less effective and reliable than server validation since it relies on java script which can be turned off in the clients browser.
spry Can work alongside server validations.
In my experience server side validation is less temperamental than spry or other javascript based validations.
For example, the reason spry is not working in the OP's form, is the empty onsubmit attribute in the form tag:
<form action="" method="post" name="emailContact" id="emailContact" onsubmit="">
This is causing the spry validation to fail on the checkbox when the form submits. Remove the empty onsubmit attribute in the form tag:
<form action="" method="post" name="emailContact" id="emailContact">
and spry validation will function.