the below SQL should do what you need and also covers when people login and out multiple times.
I have assumed if they havent logged out they are still logged in
IF EXISTS (SELECT *
FROM tempdb.dbo.sysobjects o
WHERE o.xtype IN ('U')
AND o.id = OBJECT_ID(N'tempdb..##TlbLog'))
DROP TABLE ##TlbLog
CREATE TABLE ##TlbLog
(
ID INT
,UserID INT
,Purpose VARCHAR(20)
,DateCreated DATETIME
)
INSERT INTO ##TlbLog
(ID, UserID, Purpose, DateCreated) VALUES
(1, 500, 'login' ,'2013-03-24 14:39:43.273')
,(2, 501, 'login' ,'2013-03-24 14:39:43.277')
,(3, 502, 'login' ,'2013-03-24 14:39:43.277')
,(4, 503, 'login' ,'2013-03-24 14:39:43.277')
,(5, 500, 'logout' ,'2013-03-24 14:44:43.280')
,(6, 501, 'logout' ,'2013-03-24 14:44:43.280')
,(2, 501, 'login' ,'2013-03-24 14:55:43.277')
,(6, 501, 'logout' ,'2013-03-24 15:55:43.280')
SELECT li.UserID
, SUM( DATEDIFF(mi, li.DateCreated, CASE WHEN lo.DateCreated IS NULL THEN GETDATE() ELSE lo.DateCreated END ) )TotalTime
FROM (
SELECT ID
, UserID
, Purpose
, DateCreated
, ROW_NUMBER() OVER (PARTITION BY UserID ORDER BY DateCreated ) Rnum
FROM ##TlbLog
WHERE Purpose = 'login' ) li
LEFT JOIN (
SELECT ID
, UserID
, Purpose
, DateCreated
, ROW_NUMBER() OVER (PARTITION BY UserID ORDER BY DateCreated ) Rnum
FROM ##TlbLog
WHERE Purpose = 'logout' ) lo ON li.UserID = lo.UserID AND li.Rnum = lo.Rnum
GROUP BY li.UserID