Due to gaining the information that battery saves can be exchanged without problem between fire red and leaf green, I decided to do some testing. Sorry I can't find the source of this information, it's on these forums somewhere.
Notes;
This isn't the thread for you if you only rely on save states (.sgm), this is for people who play FR/LG successfully with battery saves (.sav files).
Remember to back up your files before proceeding in case of errors or accidentally deleting valuable files.
I am using the latest non-beta VBA (1.7.2). This technique probably works with other versions, including VBA-M.
Required files;
VisualBoyAdvance.exe
vba.ini (reason for this is, if your current settings work just fine for saving on your game, then there is no reason to change those settings i.e. the default settings)
your .sav e.g. Pokemon Fire Red (U).sav
a rom of the opposite version e.g. Pokemon Leaf Green (U).gba
Instructions;
1. Open VisualBoyAdvance and load your game via savestate or battery save.
2. Save in-game via the game menu.
3. Exit VisualBoyAdvance.
4. Create a new folder and copy the required files from your original folder to this new folder.
5. Re-name your .sav exactly to the name of the rom i.e. right click > rename "Pokemon Fire Red (U).sav" > "Pokemon Leaf Green (U).sav".
6. Open VisualBoyAdvance and load the rom that would be found in the new folder you created. (Due to copying over the ini, when you load, it's automatically in your old directory.)
7. Load your save in-game.
8. Catch your version exclusive(s). Note; you can use save states to quicken the process.
9. Save in-game. We are now reversing the process.
10. Exit VisualBoyAdvance
11. Rename your .sav in the new folder back to it's original name.
12. Copy or cut the .sav you just renamed
13. Go back to your folder with your original files.
14. Paste in the .sav, overwriting the old one. (Remember to backup before in case something goes wrong).
15. Open VisualBoyAdvance and load in game.
16. Check your pokedex to make sure everything is how it should be.
17. Once confirmed that you have your versions non-available exclusives, feel free to re-do save states.
I guess you don't have to reverse the process until another version exclusive appears (i.e. just switch between versions when the need arises).
I'm fairly sure this is a very safe method, no corruption so far, and this might be a more reliable technique then gameshark due to corruption risks.
This technique is also applicable with moemon, or at least the version of moemon I have (firered). I don't know if this technique works for other generations of pokemon games.