別のクラスからは解放できない。(singleton がprivateメンバだからね)
SingletonClass のstaticメンバ関数で delete singleton することはできる。
が、それは普通のやり方ではないと思う。

C++風な書き方としては、単なるポインタではなくスマートポインタ(std::autoptrなど)を使う。
これで、deleteのことを気にしなくてよくなる。
あるいは、ポインタとnewを使うのではなく、単に値型を使う(static SingletonClass singleton; のように)。
これに対して、基本的にいつでもnewしたものをオブジェクト参照に突っ込む、
という感じなのがJava風かな。