First, Unless you are certain you need to, Don't start a new thread like that from an ASPNET page or application. Use the thread pool.
See Advantage of using Thread.Start vs QueueUserWorkItem
Regarding your question - how to get progress updates in the browser, without refreshing the page... I assume you know how to use the progress controls in jQuery. Your question centers around how to connect such a progress control to the server-side logic. The only way to do it is via requests, I suggest ajax, from the browser to the server.
If I were you, I would provide a way for the worker thread to put its status into a resource on the server - either the user session, or a database, or something like that. Then, have the ajax request from the page query that status.
In a REST scenario, the status might be available at
http://myserver/Application/WorkItem12345/status
...where WorkItem12345
is an id that points to the worker or task that is happening asynchronously. Doing an HTTP GET on that URL from the page to the server, you'd get a JSON result indicating the status, maybe it looks like this:
{"message": "working", "progress":56}
or
{"message": "completed", "progress":100}
or
{"message": "fault", "progress":14}
etc.
There must be an application on the server that responds to http://myserver/Application/WorkItem12345/status
and replies with the appropriate message. This status logic should look in the slot or resource where the Worker thread posts its status - whatever you chose to use - and then construct ad return the JSON.
Addendum
If you don't want to use jQuery, the mechanics are the same, but you need to write your own browser-side UI widget that can display a status update. In the simple case it is a simple div with html content that shows the JSON response. if you want to get fancier you could make it an actual rectangular bar that grows as the work proceeds.
But how to build that widget, is the topic for another question.
See also: Dino Esposito's MSDN Magazine article on the topic