In My opinion, It is difficult for the user to determine.
But If a person has some basic web development skills, They can detect using Firebug [If the application hosted is a web application] from Server Headers or from domain name .
Again we cannot rely on this. Every Organization follows a different hierarchy level
while deploying a web Application.
For Instance , Some has have the load balancer such as Nginx in physical machine and Application in Virtual Machine. In that case Firebug will show the Server Header as Nginx only .
If some use Google App Engine, corresponding Server Header will be reflected or domain name may have x.appspot.com.
In case of Amazon, you can see the domain name as x.aws.com.For deploying Web App in AWS, Elastic Bean Stalk is used.
Running Nmap - Port Scanner will enable to determine OS ,but again its a guess based on Finger Print. Even Virtualized System will show the OS Name and version as same as Physical System.
There are many IaaS Providers such as Rackspace, CloudFare, Azure and each of them have different configuration and engine.
Anybody can guess, but it does not mean that guessed one is the actual one and correct.
first of all, i agree with Muhammad, this does does usually not make much sense.
Anyway, probably you have a good reason for asking this question, so i might have another hint for you: depending on the underlying virtualisation infrastructure, having a look at the MAC adress might help you figuring out if you are running on a virtualises environment and even on which.
I know that this works for VMware. Unfortunately, i'm not sure for other technologies...