WPF Image UriSource and Data Binding using http:\\ URL
Solution 1
http://stackoverflow.com/questions/3148163/wpf-image-urisource-and-data-binding-using-http-url
var url = @"http://xxx.jpg";
var image = new BitmapImage();
const int bytesToRead = 100;
var request = WebRequest.Create(new Uri(url, UriKind.Absolute));
request.Timeout = -1;
var response = request.GetResponse();
var responseStream = response.GetResponseStream();
if (responseStream != null)
{
    var reader = new BinaryReader(responseStream);
    var memoryStream = new MemoryStream();
    var bytebuffer = new byte[bytesToRead];
    var bytesRead = reader.Read(bytebuffer, 0, bytesToRead);
    while (bytesRead > 0)
    {
        memoryStream.Write(bytebuffer, 0, bytesRead);
        bytesRead = reader.Read(bytebuffer, 0, bytesToRead);
    }
    image.BeginInit();
    memoryStream.Seek(0, SeekOrigin.Begin);
    image.StreamSource = memoryStream;
    image.EndInit();
    ImgAvatar.Source = image;
    bytebuffer = null;
    memoryStream.Dispose();
    memoryStream = null;
}
Solution 2
var url = @"http://xxx.jpg";
var source = new BitmapImage(new Uri(url, UriKind.RelativeOrAbsolute))
{
    CacheOption = BitmapCacheOption.None,
    CreateOptions = BitmapCreateOptions.DelayCreation
};
source.DecodeFailed += (sender, e) =>
{
    ImgAvatar.Visibility = Visibility.Hidden;
    ImgAvatarDefault.Visibility = Visibility.Visible;
};
source.DownloadFailed += (sender, e) =>
{
    ImgAvatar.Visibility = Visibility.Hidden;
    ImgAvatarDefault.Visibility = Visibility.Visible;
};
source.DownloadCompleted += (sender, e) =>
{
    ImgAvatar.Visibility = Visibility.Hidden;
    ImgAvatarDefault.Visibility = Visibility.Visible;
};
ImgAvatar.Source = source;
