Con due istanze diverse come pretendi di avere un ritorno ?
In altre parole, nel SET dai un nome ad un oggetto di tipo persona, ma nel GET stai interagendo con un NUOVO oggetto di tipo persona, ovvio che ti ritorna il default che hai impostato...
Secondo me dovresti fissare meglio i concetti cardine, l'esempio non ha molto senso ... :master: Scusa la sincerità 
Potresti fare così (ma solo per metterci una pezza)
codice:
PERSONA.VB
Public Class persona
Protected suonome As String
Protected suolavoro As String
Public Property nome()
Get
Return suonome
End Get
Set(ByVal value)
suonome = value
End Set
End Property
Public Property lavoro()
Get
Return suolavoro
End Get
Set(ByVal value)
suolavoro = value
End Set
End Property
Public Sub New()
suonome = "default nome"
suolavoro = "default nome"
End Sub
End Class
PAGINA.ASPX:
<form id="form1" runat="server">
<div>
<asp:Button ID="butGet" runat="server" Text="Get" />
<asp:Button ID="butSet" runat="server" Text="Set" />
</div>
</form>
PAGINA.ASPX.VB
Dim testpersona As persona
Protected Sub ButGet_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles ButGet.Click
testpersona = New persona
If Not isnothing(session("objPersona")) Then
testpersona = CType(session("objPersona"), persona)
End If
Response.Write("Il giardiniere è: " & testpersona.nome)
End Sub
Protected Sub ButSet_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles ButSet.Click
testpersona = New persona
testpersona.nome = "Giuseppe"
testpersona.lavoro = "Giardiniere"
Response.Write("Hai impostato: " & testpersona.nome & " - " & testpersona.lavoro)
Session("objPersona") = testpersona
End Sub
Se per prima cosa clicchi sul bottone Get ti ritorna "default nome" perche' non hai impostato nulla.
Se clicchi invece dopo aver settato le proprietà con il bottone Set, ti torna "Giuseppe".
Spero ti sia utile per capire che devi interagire con la stessa istanza per ottenere le proprietà che hai impostato...