"Between Customer and AddressDetail I have a *-* relationship."
It would be helpful if you'd said that in the first place - since that is a relatively unusual pattern!
As Dan says, you might be better off with an intervening Role object - after all there must be an association table in the database for an m:n relationship to exist at all.
"So when i have
public AddressDetail AddAddress ()
var ad = Container.NewTransientInstance<AddressDetail> ();
I get: SmdCoreModel.AddressDetail not been proxied (all properties must be made virtual/Overrideable and all collection properties should be of type ICollection<T>)"
Yes - that won't work because you are attempting to add a transient object to a persistent object and not persisting the former in the same transaction.
However, it might be possible to still use the second pattern that I gave. i.e. add a NotPersisted property to AddressDetail of type Customer, but called, for clarity, 'CreatingCustomer'. Then in Persisting (or Persisted) call CreatingCustomer.Addresses.Add(this).
I'm not 100% sure this will work, but it is worth a try.