CASE Statement - 1st case is being ignored
To me it looks much like you're asking only the registered users, as the SELECT acting as the basis for the view is:

SELECT 
[...]
 FROM usr_t_user_reg


Thus having "some users who are not registered yet and they are not displayed in the output" is what should be expected.

Having something like this would show the not (yet) registered users:

  SELECT
    u.username "User", 
    r.db_instance "Instance",
    NVL(r.db_instance,'not registered yet') "Status"
  FROM 
    SYS.dba_users u LEFT OUTER JOIN usr_t_user_reg r ON u.username = r.username;


That will, however, not give those users that are still in the "registered" table but are not anymore DB users, for that you could use the parallel:

  SELECT
    r.username "User", 
    r.db_instance "Instance",
    CASE NVL(u.username,'X') WHEN 'X' THEN 'not a user anymore' ELSE 'OK' END "Status"
  FROM SYS.dba_users u RIGHT OUTER JOIN usr_t_user_reg r ON u.username = r.username;


The SQL above is probably possible to combine nicely, and is likely to be sub-optimal, but it did work on quick testing...

Edit:
Full outer join version combining the two queries above:

  SELECT
    NVL(r.username, u.username) "User", 
    r.db_instance "Instance",
    CASE NVL(u.username,'X') WHEN 'X' THEN 'not a user anymore' ELSE 
      CASE NVL(r.db_instance,'X') WHEN 'X' THEN 'not registered' ELSE 'OK' END
    END "Status"
  FROM SYS.dba_users u FULL OUTER JOIN usr_t_user_reg r ON u.username = r.username;


Edit 2:
A version providing also the name of the instance(s) the user is not registered, the name of the instance(s) the non-existent user is registered to, and filtering out all of the cases where status is OK:

SELECT * 
FROM (
  WITH t1 AS (
    SELECT 
      u.username, 
      i.db_instance
    FROM SYS.dba_users u, ( SELECT DISTINCT db_instance FROM usr_t_user_reg ) i
  )
  SELECT 
    t1.username "User", 
    t1.db_instance "Instance", 
    CASE NVL(r.db_instance, 'X') WHEN 'X' THEN 'not registered' ELSE 'OK' END "Status"
  FROM t1 LEFT OUTER JOIN usr_t_user_reg r ON t1.username = r.username AND t1.db_instance = NVL(r.db_instance, t1.db_instance)
  union
  SELECT
    r.username "User", 
    r.db_instance "Instance",
    CASE NVL(u.username,'X') WHEN 'X' THEN 'not a user anymore' ELSE 'OK' END "Status"
  FROM SYS.dba_users u RIGHT OUTER JOIN usr_t_user_reg r ON u.username = r.username
)
WHERE "Status"!='OK';


It starts getting uglier and even less optimal, but again that did work on the test setup.