I'd use a TallyTable based method:
DECLARE @day DATETIME, @interval INT
SET @interval = 15
SET @day = '2010-11-22'
;
WITH splitTimes AS
(
SELECT DATEADD(MINUTE, @interval * (N-1), @day) splitTime
FROM Tally
WHERE N<=(24*60/@interval)
)
SELECT
agent.Agent,
cast(sp.splitTime as time) as splitTime
FROM #AgentSession sess
LEFT OUTER JOIN #Agents agent ON sess.agentid = agent.agentid
CROSS JOIN splitTimes sp
WHERE sess.sessionstart >= @day -- 20101122 00:00
AND sess.sessionend < DateAdd(hour, 20, DateAdd(minute, 1, @day)) -- 20101122 20:01
ORDER BY sp.splitTime