I just came across an event that has happened to me maybe four times in the last two years. It's very rare, but is a colossal pain in the butt when it happens. I'll share my experience and maybe it will help down the road.
Event: may be more causes, but from what I've deduced: if you close Unity when there is a compilation error in your code, on reopening Unity, all NGUI prefabs will have lost their data (all of it!).
The first time this happened to me, I set about manually resetting all the data that was lost. It took me several days to recover.
Current fix: I just discovered that you can manually walk your tree, go each prefab, click Revert and then immediately Undo (ctrl+z). This will restore your data to the values that were present before. UILabels that had NGUI fonts assigned will still say they are Unity fonts, but if you click to another GameObject and then back again, the data will show properly.
Moral: do not close Unity with code that won't compile.
I hope this helps somebody, or perhaps it might spark some further discussion or give Aren an "ah-ha" moment....