I am using InstanceContextMode.Single in the sevice behaviour plus my service also implements the singleton pattern. 
Such as:
 private static readonly object padlock = new object();
 public static MySingletonService Instance
      {
          get
          {
              lock (padlock)
              {
                  if (_event == null)
                  {
                      _event = new MySingletonService();
                  }
                  return _event;
              }
          }
      }
Now, the reason that I did this was I wanted to access the same instance of the service regardless of whether the call comes from a channel or someone simply calls it like a simple class(code snippets given for both scenarios).
var channelFactory = new ChannelFactory<MySingletonService>(myBinding, myEndpoint);
             channelFactory.Open();
            using (channelFactory)
             {
            var channelclient = channelFactory.CreateChannel();
            channelclient.MethodCall(this);
               }
Also,
MySingletonService.Instance.MethodCall(this);
But, I get two differenct objects (verified by checking object hashcode) in both cases and not one object.
Is there any other way to achieve this?