Solution may be something like:
void bgw_ProgressChanged(object sender, ProgressChangedEventArgs e)
{
progressBar1.BeginInvoke(new MethodInvoker(pb => pb.Value = e.ProgressPercentage));
}
Since you are trying to update an UI element (your ProgressBar) from a different thread than the one which has created it, you have to use BeginInvoke() method.
Hope this helps.
[edit] Updated to construct a delegate as parameter for BeginInvoke() [/edit]