Is there any way to earn the Garand without the code, like by points maybe? I've already tried the veteran page but it's always down.
I recieved the M1 Garand on Xbox 360 after without playing many other BF games, it requires your account to have veteran status to unlock.
Veteran status is a stat that is tracked throughout all battlefield games between BC1 and BF4 (potentially hardline as well but I can't remember, and I would not know about BF1). On my xbox I had only played BFBC2, BFBC1 Demo and about 1/2 years later I recieved the M1 Garand linked to my profile, if you really want it then I would recommend trying to obtain another BF game, alongside playing all the demo's you can. Of course the same method works on Ps3 if you are playing on that.
According to the Battlefield Wiki page on the M1 Garand:
Only available in multiplayer, the WWII M1 Garand is available to Battlefield veterans.
Those who have played two previous installments will be rewarded with the M1 Garand for use in multiplayer.
The only way to earn the M1 Garand in Bad Company 2 is by being a Battlefield Veteran, by having played at least 2 previous Battlefield games.
You cannot earn the M1 Garand by progressing through a specific class, leveling up, or any other means in-game.
So I would keep checking the Veteran page if you still want the weapon.