First, nothing is ever saved instantly in an MMO and there is always a delay specifically to keep the database running smoothly. For casual transactions the common delay seems to be 5-30 seconds, not minutes. Certain events like logging out or transitioning between world spaces will force a fast update.
If you watch carefully you'll hear of occasional roll-backs of items when a server area crashes, that delay chosen above is a compromise between optimal server updates and not annoying players too much on the rare crash.
Transactions between players should be handled as such, where the end result is only applied once all conditions of the transaction are complete. This is a standard database concept.
Second, items which cost real money should be handled the same way as a transfer between players. Wait to tell the player about the item until all conditions of the transaction are complete. Maintain a separate log of these kinds of important transactions, a player won't care if he loses 15 seconds of coins gathered but would care a lot if he lost that $100 item.
In the rare case of a database crash the database itself is backed up regularly (daily) and can be restored. At that point the logs you carefully created above that hold the big item transactions can be applied so at the very least the items show up in the player inventory again.