When you use filter in this case, it's checking for users that are the same as ("Joao Claudino", "1240", 2). There aren't any in the list, so filter returns []. You can't use head on [], because there's no first element.
Other notes about your code:
- if x then True else False is the same as just x.
 - The otherwise case for userRegistration can never be reached.
 
I would write it more like this:
checkUser user userList = elem user userList
userRegistration user list
    | checkUser user list = list
    | otherwise = user:list