You still lose as you won't get raises, bonuses or promotions. You may lose extra-legals like company cars, insurance (?), long term savings-matching. Even then your cost of living will probably increase due to not working.
Yea, the bonus point is interesting, especially in finance where bonuses can be > 100% of base. You can't insist on firms paying last years bonus, or else people would just quit and get a non compete if they had an insane year. But paying only base also seems a bit unfair.
A thought I had was you'd have to pay whatever their new offer is paying. The argument is that if you want to prevent someone from working, you should have to pay them their worth - which, in the case of someone resigning with a competing offer - has just been priced by the hiring market!
Paying the wage of the new offer leads to bad incentives w.r.t. nepotism. It also discourages starting your own small business where you tend to pay yourself a small wage.