Here’s the loading-bar system that I wrote for Pegzo (also used now in Retrofit:Overload, although that loads so fast it doesn’t really need it).

Loading bars seem to be rare in community games and I think the approach I took is simpler than is often advised. This system is single-threaded and revolves around an enumerator function that looks something like this:

    thing = content.Load<Thing>("thing");
    yield return progress();  

    levelNames = content.Load<LevelNames>("level-names");
    yield return progress();  

    foreach (string name in levelNames) {
        levels.Add(content.Load<Level>(levelName));
        yield return progress();
    }  

    // etc.

You can download the source from here: Download EasyLoadingBar.