Silverlight runs completely on the client, inside the browser, so there's no need to worry about storing things in session state on the server. Well, unless you are posting back to the server from within your app, but there's no indication in your question that you're doing that.
If you create a button in Silverlight (from a page or control), it will be available to you in that page or control just like any regular old .NET variable. If it's declared as a field, you can get at it from anywhere.
public partial class MainControl : UserControl
{
private Button myButtonToKeepAroundAllTheTime;
protected void TriggerButton_Click(object sender, EventArgs e)
{
myButtonToKeepAroundAllTheTime = new Button()
{
Content = "Click Me",
Height = 20
};
}
}