Трябва да кръстосате резултатите от двете селекции в полето CategoryID. Мисля, че това трябва да работи:
SELECT DISTINCT PosterID
FROM table1 x
WHERE PostingDate BETWEEN '2012-05-01' AND '2012-06-30'
AND posterID NOT IN (SELECT PosterID
FROM table1 y
WHERE PostingDate > '2012-07-01' AND x.CategoryID = y.CategoryID);