You seem to have covered many of the bases you need, so I would tell you to just test them. Get a idea and roughly implement it, or even do the maths in Excel (or any other software), and check the outcome in the long run.
Which upgrade options do you have? Just max speed? Health/resistance to damage? Or steering? Acceleration? Boost (if theres one) ? Ratio of shielding from hits (which reduces speed)?
You also talks about weapons. Can some of them be consumable, and others upgradeable? For example, a seeking missile can be single use, but a machine gun can have its damage upgraded. These variables will determine the options you have.
You can also give conflicting choices. A powerful engine can be heavy, so the car has better max speed but not great acceleration or handling. So the player feels the progression but don't get really overpowered. If the player has to choose, they will try different aproaches and see which ones they like more.
8 hours ago, suliman said:
Having upgrades weak or very expensive (=player gets less upgrades) just makes upgrades less impactful, which is not very fun for an arcade game (but would make sense in a simulation)
Why not? Top Gear on the SNES did that, and it worked reasonably well, altough its kind of unbalanced from middle to end, becoming easier to get better than the others racers as the game goes on. It depends on how many races there are in the game. If its a long championship (40 races or more), small incremental upgrades work better. If its short, the upgrades need to be more powerfull.
You want impactful upgrades which, by definition, makes the player noticeably better than the others, but you also want to keep the game balanced and challenging. Without making other racers also get better, I see no way of doing that. Thats not saying they need to get the same upgrades as the player. But give them something to counter the player. For example, if the player gets better armor (25% better), give the enemies more fire power (10% more damage). The player will feel more resistant, but will not be very much more resistant . And you don't need to tell that to the player. If they don't do the math, they problably won't notice. They just need to feel.
8 hours ago, suliman said:
Giving the loosing player a boost by giving him/her more money might work yes, but it's a bit strange lore-wise
Is it necessary to integrate the lore to the mechanics? If that is what you really, then don't give the loosing players money, but call it sponsoring money (such as real F1 racing teams work - they get money, even if they're not the winners, so they can run in the next races). They need to get better somehow, after all. Make a cutscene where a enemy player boasts on how theyr engineer make the engine better (and makes that enemy better in the next races). Its a harder approach, because now you have more things to worry about.
In the end, theres no single answer. Balancing this kind of game is hard and takes time. You need to change the variable and test the results, until you get a good enough. Trying to get the perfect system can take ages, so I wouldn't try that.