http://msdn.microsoft.com/en-us/library/6tc47t75%28v=VS.80%29.aspx
http://msdn.microsoft.com/en-us/library/ms366730.aspx
You should not create a new method that return CustomMembershipUser.
You should have only MembershipUser CreateUser(...) in the custom membership provider. Before your return you need to cast the CustomMembershipUser to be MembershipUser.
E.g. out following when you return.
return (MembershipUser)new CustomMembershipUser();