I did a wholesale update of MAME once and promised I'd never do it again. However, I absolutely want to be able to play the latest supported games and take advantage of the latest bug fixes without the risk of breaking anything that currently works fine (since 0.146 there have been some important advances: new Cave games, Raiden II, many improvements to sound, much better HLSL vector glow, etc). So I came up with a very simple method of doing partial upgrades.
My base version of MAME is also 0.146. It is in a folder called MAME. When I discover that support for a new and desirable game has been added to mame, or a worthy enhancement has been made, I will install the latest version of mame to a parallel folder called, say, MAME179. I will then just drop the rom file of the new/fixed game into ithe rom folder of this version of mame. This first step breaks absolutely nothing.
The magic is in a script. Whenever a mame game is launched from the front end, it runs an AHK script that searches for the game in the rom folders of all parallel instances of mame from newest to oldest. This script never has to be modified. Once the script finds the rom, it runs it in the version of mame it found the rom in. So if I learn that POKEY sound was improved in Centipede, I just put a copy of centiped.rom into MAME179\rom and it will automatically run using 0.179. If I decide I don't like the sound, I just remove the rom from that folder, and it automatically reverts back to run in 0.146. If rev. 0.190 of MAME now adds some new game, then I install 0.190 it into a new folder called MAME190 and put just the rom of the new game in its \rom folder. The script will now run the new game in 0.190, Centipede in 0.179, and everything else will run in 0.146. If I move centiped.rom to MAME190\rom and it works, then I can delete MAME179 if I want.
The nice thing about this system is that you can take advantage of new mame features surgically, only ever deal with a small handful of new and improved rom files, and you never break anything that currently works. Currently, I have about a dozen roms that I manage this way.