There are specific advantages to there only ever being one of an object. Just for one example, even in a multi-threaded environment, if you can guarantee that there's only ever one object that has access to some data (i.e., that class' private data) then you can modify the data without using a mutex/critical section/whatever. As soon as you allow more than one object (no matter what other number you pick) you've lost the fundamental quality that makes a singleton interesting.
Almost any other number results in something like a fixed-size collection. If you need to support a multi-threaded environment, you can use a counted semaphore to control creation of objects. Otherwise, you might use something like an array of objects, with a mutex controlling access to each.
If you don't need to support multi-threading, a simple counter should be adequate.