Query to select max value on join
Your existing query is close to something that you could use but you can get the result easily by making a few changes.  By altering your query to use the APPLY operator and implementing CROSS APPLY.  This will return the row that meets your requirements.  Here's a version that you could use:

SELECT 
  u.Username, 
  u.UserType,
  u.Points,
  lv.Level
FROM Users u
CROSS APPLY
(
  SELECT TOP 1 Level
  FROM Levels l
  WHERE u.UserType = l.UserType
     and l.MinPoints &lt; u.Points
  ORDER BY l.MinPoints desc
) lv;


Here's a SQL Fiddle with a demo.  This produces a result:

| Username | UserType | Points |  Level |
|----------|----------|--------|--------|
|     John |        A |    250 | Silver |
|     Mary |        A |    150 | Bronze |
|     Anna |        B |    600 | Bronze |