In principle you can redefine safely a native function inside Block and given that Det uses Times for symbolic matrices then
Block[
{Times = f}, Det[{{a, b}, {c, d}}]
]
f[a, d] + f[-1, b, c]
As pointed out by @Kuba and @Jens there are several limitations.
A better solution would be this:
newDet[m_, f_] := Activate@(Block[{ms = Length[m], Times = f, a},
Det@Table[Inactive[Part][a, i, j], {i, ms}, {j, ms}]] /. f[-1, x_, y_] -> -f[x, y] /. a -> m)
or
newDet[m_, f_] :=
Activate@ReleaseHold@(Block[{ms = Length[m], Times = f},
Det@Table[Inactive[Part][HoldForm[m], i, j], {i, ms}, {j, ms}]] /. f[-1, x_, y_] -> -f[x, y])
Now we can calculate the new determinant with an arbitrary function g
newDet[{{2 a, b}, {c, d}}, g]
g[2 a, d] - g[b, c]
More information about Block and how is different from With or Module in this answer
Funare. Without that information, there is a good chance that any effort to answer this could be misdirected. – Jens Oct 28 '14 at 18:01