Yes, you need to add a primary key (id) as suggested by @Will.
To retrieve each item once (and only once) no matter how many matches there were in a 1-minute window, try a subquery instead of a full join:
Select user,item,date_time from my_table t1
where id in (select t2.id from my_table t2,my_table t3
where t2.id <> t3.id and t2.user = t3.user
and abs(t2.date_time - t3.date_time) < 60)
- edit--
, . ", 3 60 " ", 2 ". : , ( ) "temp1":
select * from my_table where user in
(select user from temp1 group by user having count(*) > 2);