Most people here and on StackOverflow agree that Singletons are evil.
The main explanation I've come across against the use of Singletons, is they fact that they provide a global point of access to an object.
I admit to not understand why this is a bad thing. It's very convenient to be able to access an important and useful object from anywhere in your code, without having to 'pass it around' in order to get it.
So why is a global point of access in OOP a bad thing? Not only with Singletons, but generally. Please give concrete examples.