Meteor Form Submission
Case 1
The return here are good if you want to stop the execution of your function here.

Case 2
Meteor.call is asynchronous, so if (error) is not the next element on stack. You have to return false inside your event function, not inside the Meteor.call's callback.

Template.registration.events({
        "submit #register_form": function (event) {
            // This function is called when the registration form is submitted.

            event.preventDefault(); // Correct usage!

            var form_data = {
                username: event.target.username.value,
            };

            if (!Match.test(form_data.username, String)) {
                Session.set("message", "username must be a string");
                return false;  // 1 : Correct if you want to interrupt
            } 

            if (form_data.username.length &lt; 6) {
                Session.set("message", "username must be at least 6 characters");
                return false;  // 1 : Correct if you want to interrupt
            }

            Meteor.call("check_username",form_data.username,function(error, result){
                if (error) {
                    Session.set("message", error);
                }
                if (result) {
                    Session.set("message", result);
                }
                //2: Was incorrect
            });
            //2
            return false;
        }
    });


PS: You have to understand that if the submit method doesn't return false, it will send the form to the action URL. So you have to return false before the execution reaches the end of the function.