Take a lesson from DICE and BFBC2, which has a great system to update stats:
Game client and stats
The game client only reads from the stats database; it never writes.
Stats reads happen on two occasions: when a player logs in, and when a player exits from a server back to the main menu. The client has a local cache of all stats. When one of the two previous events occur, the game client requests a handful stats (for instance the, the player's total score and accumulated online playtime). If any of those stats are different from the locally cached values, the game client goes out and grabs all stats (approximately 2000 values).
The game client uses these stats to display information in the main menu. It is not used in-game in multiplayer.
Game server and stats
The game server reads and writes to the stats database.
When a player enters a server, the server requests approximately 1000 stats for that player from the database. Anything that has to do with stats and ranks is controlled by the server (for instance, which weapons are unlocked for a specific player).
The server writes back a player's stats when the player leaves the server. Also, all players' stats are written to the database at the end of each round. This is to minimize the risk that player progress is lost because of a server crash. When writing stats, the server will only write those stats that have changed. In addition, whenever possible the server will issue commands like "add 3 to stat named ABCD" rather than "write 27 to stat named ABCD". This minimizes the risk that any bugs in the code or network communications problems will trample stats; the worst that can occur is that a stat is not increased, it will not get lowered or set to zero inadvertently.
Usually the game client will write a lot less than 1000 stats. I don't have figures at hand, but perhaps 100 stats are usually updated after a player has played a full round.
Source: http://forums.electronicarts.co.uk/battlefield-bad-company-2-pc/1387445-stats-system-performance-perspective.html (interesting read BTW)
You don't lose your gained stats this way
Also, not being able to properly unlock weapons, attachments and modules without going into a lobby is just ridiculous. Is the game even being updated server side after non-lobby unlock?
TLDR: Stat updates need to be after every round! + Really gotta fix how unlocking stuff works
If anyone has anything to add/discuss, go ahead