This is really unelegant, brute force version, but barring typos on my part, it should get you what you want. If I were coding it myself, I would make TierCat a separate query, make Maxcat an aliased aggregate call to Tiercat, and then the code would look more elegant and be more maintainable. Notice that I assumed the CSR could happen to have more than one "best" tier, and just used the first one that Access returned.
Code:
SELECT TierCat.Tier, [CLastName] & ", " & [CFirstName], First(TierCat.CategoryID)
FROM g_CSR INNER JOIN
(
SELECT CM1.CSRID AS CSRID, CAT1.tier AS Tier, CAT1.CategoryID AS CategoryID
FROM Category AS CAT1 INNER JOIN
(CallMonitor AS CM1 INNER JOIN CallMonitor_Category AS CMC1
ON CM1.CallID = CMC1.CallID)
ON CAT1.CategoryID = CMC1.CategoryID)
WHERE ((CM1.MonitorDate) Between [TempVars]![g_dtRepBeg].[Value] And [TempVars]![g_dtRepEnd].[Value])
AND ((CM1.FYI_Only)=No)
AND ((CM1.CoachingOnly)=No)
AND ((CM1.FYI)=No)
AND ((CM1.MonitorNotPossible)=No)
) AS TierCat
INNER JOIN
(
SELECT CM2.CSRID AS CSRID, MAX(CAT.tier) As InnerTierMax
FROM Category AS CAT2 INNER JOIN
(CallMonitor AS CM2 INNER JOIN CallMonitor_Category AS CMC2
ON CM2.CallID = CMC2.CallID)
ON CAT2.CategoryID = CMC2.CategoryID)
WHERE ((CM2.MonitorDate) Between [TempVars]![g_dtRepBeg].[Value] And [TempVars]![g_dtRepEnd].[Value])
AND ((CM2.FYI_Only)=No)
AND ((CM2.CoachingOnly)=No)
AND ((CM2.FYI)=No)
AND ((CM2.MonitorNotPossible)=No)
) AS MaxCat
ON TierCat.CSRID = MaxCat.CSRID
AND TierCat.Tier = MaxCat.InnerTierMax
ON g_CSR.CSRID = TierCat.CSRID
GROUP BY TierCat.Tier, [CLastName] & ", " & [CFirstName]