the simplest approach I can think of is to make the filename of the logo equal to the username (since there is only one user per role). then on page load you could do something like
|img.ImageUrl = "/images/logo/" + Page.User.Identity.Name + ".jpg";
if there are many users per company, depending on how many companies there are you might consider using the asp.net themes to style the page, creating one theme for each company/role.
then on page_preinit you can do something like
| Page.Theme = "A";
|else if (User.IsInRole("B"))
| Page.Theme = "B";
and so on, defining the logo in css. this is the approach I used on our city website (www.mcallen.net
) to show different banners and colors (while keeping the same basic site structure the same) for different departments.
I hope that this was helpful! if you think either of these will work for you, I'd be happy to go into more detail...