Singleton はふつう継承しないけど、OO のデフォルトは virtual だから、
コンストラクタ以外はなんでもかんでも virtual にするのは正しいですね。

class Singleton
{
private:
static Singleton *m_Object;
Singleton()
{
    if(m_Object == 0) {
      m_Object = new Singleton;
    }
}
public:
virtual ~Singleton()
{
delete m_Object;
}

virtual Singleton *GetObject()
{
return m_Object;
}
};

これが正しいのかな。