If your list contains sets of identical items, and you want just one of them dropped, which one is it that you want dropped?
So this is much like you did above. If it is the first occurrence, we can just find its position in the list and drop it:
In[1]:= list = {dog, dog, cat, fish , cat, dog}
Out[1]= {dog, dog, cat, fish, cat, dog}
In[2]:= dropFrom[list_, thing_] :=
Drop[list, Position[list, thing, 1, 1] // Flatten]
In[3]:= dropFrom[list, cat]
Out[3]= {dog, dog, fish, cat, dog}
In[4]:= dropFrom[list, bear]
Out[4]= {dog, dog, cat, fish, cat, dog}