To give a basic example, you will want to create a panel with Visible="True". If you set that property to False, then the control markup is not sent to the client. To hide the control, set the style property 'display: none;'.
<asp:Panel ID="pnlUploading" runat="server" style="display:none;">
<!-- put your image info control in here with an asp:image control -->
</asp:Panel>
Next, create a simple javascript function that will find the control by id and change that display style we set:
<script>
// controlID is the clientID of the asp.net control
// displayMode is the text to set to the display property,
// usually none (hidden), inline (shown inline, like a <span>),
// or block (shown as a block element, like a <div>)
function SetDisplay(controlID, displayMode)
{
var control = document.getElementById(controlID);
if (control != null)
{
control.style.display = displayMode;
}
}
</script>
Finally, in your page somewhere (e.g., page_load or Page_prerender), set the OnClientClick property to your method with the proper arguments. VB shown:
Dim js As String = String.Format("SetDisplay('{0}', '{1}');", pnlUploading.ClientID, "block")
btnUpload.OnClientClick = js
This does not take into account the positioning of the panel. You may also look into using a ModalPopup if it is available to you (.Net 3.5 SP1 required by the AjaxControlToolkit) because it is easier to set up to display in the center of the page than trying to devise your own custom positioning code.