Try something like
  $.validator.addMethod("unique",
            function(value, element, params) {
                var isUnique = false;
                if(value == '')
                        return isUnique;
                id_send= '';
                if(params[1] !='')
                    id_send ='id='+params[1]+'&';
                $.ajax({
                    url: "path"+params[2],
                    type : 'GET',
                    async: false,
                    data: id_send+'field=' + params[0] + "&value=" + value,
                    dataType: 'json',
                    cache: true,
                    success: function(data){
                        isUnique = data;
                    }
                });
                return isUnique;
            },
            jQuery.validator.format("Value already in use")
    );
In the above code:
- path is the root path of your application;
- params[0] is the name of attribute to check unique;
- params[1] is the id of the object, if you want to check in edit too, so exclude himself;
- params[2] is the path to the php file that gonna check.
Resulting in something like:
 rules:
        {
            email: {
                required: true,
                unique:['email', $('#user_id').val(),'uniqueemail.php'],
                email: true
            },
The PHP uniqueemail.php, search for the value in field email, if return empty or the user with id equals $('#user_id').val() so return true, else return false.
Note that the async attribute is set false, this is a set back but is gonna do the job.