If you make it a global object, then everyone has access to it, and anyone can use it without calling getInstance(). If so, then what is the purpose of getInstance() then? First time, you will call it to create the instance, then you wouldn't be required to call getInstance(), since after the first call, you can directly use instance.
A private static instance gives you more control how it can be accessed: only through by calling getInstance(). 
Now why you get multiple definition of instance error when compiling your code? Its because you've defined the global object in the header file itself, which is included in multiple .cpp files. This causes multiple definitions of the object, one definition in each translation unit (.obj  file).
What you actually should be doing is this:
//Singleton.h
class Singleton
{
private :
        Singleton();
        Singleton(const Singleton &);
       ~Singleton();
        static Singleton* instance; //declaration of static member!
public:
        static Singleton* getInstance();
       //..
};
And then define the static member in the .cpp file as:
//Singleton.cpp
 Singleton *Singleton::instance = 0; //definition should go in .cpp file!
 Singleton::Singleton() {}
 Singleton* Singleton::getInstance()
 {
     if ( instance  == 0 ) instance  = new Singleton();
     return instance;
 }
 //...