You need a correlated subquery:
SELECT UserID
FROM @SelectedID si
WHERE NOT EXISTS (SELECT 1
FROM @SelectedIdValue siv
WHERE si.UserId = siv.UserId
);
Your version of the query simply returned false for all rows. The subquery returns a value, so something exists.
EDIT:
You can phrase this as a left outer join
if you want:
SELECT si.UserID
FROM @SelectedID si LEFT OUTER JOIN
@SelectedIdValue siv
ON si.UserId = siv.UserId
WHERE siv.UserId IS NULL;