I have faced this situation many times and below is what I do :
When obvious methods do not work .....(just like in your situation) :
Find out the database ID from sysdatabases.
Then execute - sp_lock
that will show all the locks on the instance along with spid and dbid.
Kill the spids with the dbid that you are trying to offline or drop.
Though, the process is a bit manual, it can be automated as below :
IF OBJECT_ID('tempdb.dbo.#temp', 'U') IS NOT NULL
DROP TABLE #temp;
create table #temp (spid int
, dbid int
,ObjId bigint
, IndId bigint
,Type varchar(5)
,resource varchar(max)
,Mode varchar(5)
,status varchar(10));
declare @dbid int
select @dbid =DB_ID(db_name())
insert into #temp
exec sp_lock
select * from #temp
where dbid = @dbid