I have had this problem before also. When you are using the CSharp site the runtime automatically creates the CommerceContext objects for you. But when you moved to WCF those contexts became null. Here is a quick fix that works for both cases:
ProfileContext oProfileSystem = null;
if (null == CommerceContext.Current)
oProfileSystem = new ProfileContext(Constants.ProfileConnectionString, new ConsoleDebugContext(DebugMode.Checked));
else
oProfileSystem = CommerceContext.Current.ProfileSystem;
Profile userProfile = oProfileSystem.GetProfile(UserLoginPropertyName, userid, UserProfileName);
The WCF service will see CommerceContext.Current == null and create a new one.
Good Luck,
Matt Furnari