The Windows Azure Storage Client Library protects the integrity of the blob being uploaded by verifying an MD5 hash of the data when it is sent to the Windows Azure Storage Service (in most cases). If you are using an HTTPS connection to the service, this would also verify the data was sent without errors.
The details of how MD5 hashes are used: http://blogs.msdn.com/b/windowsazurestorage/archive/2011/02/18/windows-azure-blob-md5-overview.aspx
I believe the corruption you are seeing occurred between the client's web browser and your application. You will need to have the user try their upload again.
By the way, your code creates two additional copies of the data unnecessarily (MemoryStream and byte array). Instead, try this:
blob.UploadFromStream(stream);