Rather than using the temp table, you could have two CTEs:
;WITH CTE(USERID) AS (
SELECT ims.USERID FROM IMSIdentityPOST ims
EXCEPT
SELECT pp.USERID FROM PPposttest pp
), TEMP_SAVE(USERID) AS (
SELECT USERID FROM IMSIDENTITYPRE
EXCEPT
SELECT USERID FROM PPPRETEST
)
SELECT * FROM CTE WHERE USERID IN (SELECT USERID FROM TEMP_SAVE)
You could also make use of the INTERSECT operator:
(SELECT ims.USERID FROM IMSIdentityPOST ims
EXCEPT
SELECT pp.USERID FROM PPposttest pp
)
INTERSECT
(
SELECT USERID FROM IMSIDENTITYPRE
EXCEPT
SELECT USERID FROM PPPRETEST
)