A reference can only be initialized (ie. bound to an existing object) when it is constructed. Your class has reference members, so it has to initialize them in its constructor; that's why the compiler complains about a missing default constructor (it cannot be generated by the compiler).
class LoadingThread : public sf::Thread
{
private:
int loadedSoFar;
virtual void Run();
public:
LoadingThread(std::map<std::string, sf::Image>& img, std::map<std::string, sf::Font>& fnt) : images(img), fonts(fnt)
{
}
int GetLoadedSoFar();
std::map<std::string, sf::Image>& images;
std::map<std::string, sf::Font>& fonts;
};
LoadingThread loading(gameImages, gameFonts);
loading.Launch();
If you want ot be able to change the images and fonts after constructing the instance, use pointers instead.