The best way I can think of for doing this would be to provide a "Global Command" that has all the achievements stored and when a player receives this achievement, you would give them a small code. It could be numerical or alphabetical. When they restart the game, they could simply enter in all these codes and it would unlock the specific achievement.
Does that help?
this is an issue for all games, as they're all coding programs, but they've handled it for you, and you just choose 'save' and 'load'.
However, the work done is not easy, it's very messy (unless you're a professional coder/programmer), as try to understand:
you have a bunch of code (which is what a game, or any software program, is), which creates (IS) the initial state of a game. If you do anything in the game, then you change the code (adding to it, changing it, removing from it, etc), so you either have to save/copy the entire (new/altered) game code, so when you click to 'load' your game, it uses that entire (new/altered) code, which is the current state of whatever all of what you've been doing in your game, or you just save/copy the changes from the original code, and then when you 'load' up your game, you load up the initial code + the changes code (though this is much more difficult than just saving/copying and loading/initializing the new/current entire game code), to get back to the same state / code state of everything that you've been doing in your game.
hopefully, this shows you what a nightmare it is, we take that 'save' and 'load' feature for granted, as the game coders are professional coders and they got it all coded up right to work well. There's no easy way to do it.
Anonynn's 'password' method is the simpliest, and only method for noob coders, but depending on what is needed, it can be the same nightmare as the big issues involved with trying to do original code + altered code, hopefully you can understand these issues... if not... I can try to explain...