Maybe you can use the next view to determine if you can cancel a certain session.(NM : nusmber of minutes )
It returns the sid of all the sessions that have been inactive for NM*60 seconds.

select v.spid
from v$session s,v$session_wait w,v$process v
where
s.sid = w.sid and
v.pid = s.sid and
seconds_in_wait > &NM * 60

Hope this helps
Gert