Kim Kardashian has been labelled “revolting” and “vulgar” after wearing an iconic cross worn by Princess Diana.