You cannot sort by multiple fields like you can with a SQL’s ORDER BY clause. You will need to group, then range through each group.
{{ range site.RegularPages.GroupBy "Weight" }}
{{ range .Pages.ByTitle }}
<h2><a href="{{ .RelPermalink }}">{{ .LinkTitle }}</a></h2>
{{ end }}
{{ end }}
Assuming you don’t have any negative page weights, pages without weights will be at the top of the list.