I think you need "return old", not "return new", in the body of thetrigger if you want the delete to take place. new would be NULL ina delete situation ...
regards, tom lane