Hola, lo que pides no es un tema sencillo de resumir en pocas palabras. 
Hace mucho tiempo, en mis inicios, subclaseé el Listviewe y cada cierto tiempo le fui añadiendo características de todo tipo, como por ejemplo la barra de progreso en la que estás interesado. 
Estos son los miembros que te interesarán de mi user-control:

ProgressBar_Enabled
Progressbar_Column
ProgressBar_BackColor
ProgressBar_BorderColor
ProgressBar_FillColor1
ProgressBar_FillColor2
ProgressPercent
ProgressPercent_Decimal
ProgressPercent_Text
ProgressPercent_Text_Allignment
ProgressPercent_Text_Trimming
ProgressPercent_Font
ProgressPercent_Forecolor
Aquí tienes el source completo:
· 
ElektroListviewY aquí un ejemplo mucho más reducido que guardé hasta ahora:
- #Region " [ListView] Draw ProgressBar " 
-   
-     ' [ [ListView] Draw ProgressBar ] 
-   
-     Private Listview_Column As Integer = 4 ' The column index to draw the ProgressBar 
-   
-     Private Percent As Double = 0 ' The progress percentage 
-     Private Percent_DecimalFactor As Short = 1 ' Example: 0.1 
-     Private Percent_Text As String = "% Done" ' Example: 0.1% Done 
-     Private Percent_Forecolor As Brush = Brushes.Black 
-     Private Percent_Font As Font = Me.Font 
-   
-     Private ProgressBar_BackColor As Brush = Brushes.White 
-     Private ProgressBar_BorderColor As Pen = Pens.LightGray 
-     Private ProgressBar_FillColor1 As Color = Color.YellowGreen 
-     Private ProgressBar_FillColor2 As Color = Color.White 
-   
-     ' ListView [Layout] 
-     Private Sub ListView1_Layout(sender As Object, e As LayoutEventArgs) _ 
-     Handles ListView1.Layout 
-   
-         ' Set Listview OwnerDraw to True, so we can draw the progressbar. 
-         ListView1.OwnerDraw = True 
-   
-     End Sub 
-   
-     ' ListView [DrawColumnHeader] 
-     Private Sub ListView_DrawColumnHeader(ByVal sender As Object, ByVal e As DrawListViewColumnHeaderEventArgs) _ 
-     Handles ListView1.DrawColumnHeader 
-   
-         e.DrawDefault = True ' Draw default ColumnHeader. 
-   
-     End Sub 
-   
-     ' ListView [DrawItem] 
-     Private Sub ListView_DrawItem(ByVal sender As Object, ByVal e As DrawListViewItemEventArgs) _ 
-     Handles ListView1.DrawItem 
-   
-         e.DrawDefault = False ' Draw default main item. 
-   
-     End Sub 
-   
-     ' ListView [DrawSubItem] 
-     Private Sub ListView_DrawSubItem(ByVal sender As Object, ByVal e As DrawListViewSubItemEventArgs) _ 
-     Handles ListView1.DrawSubItem 
-   
-         If (e.ItemState And ListViewItemStates.Selected) <> 0 Then 
-             ' Item is highlighted. 
-             e.Graphics.FillRectangle(SystemBrushes.Highlight, e.Bounds) 
-         End If 
-   
-         ' Draw the progressbar. 
-         If e.ColumnIndex = Listview_Column Then 
-   
-             ' Center the text in the progressbar. 
-             Dim sf As New StringFormat 
-             sf.Alignment = StringAlignment.Center 
-   
-             ' Background color of the progressbar is white. 
-             e.Graphics.FillRectangle(ProgressBar_BackColor, e.Bounds) 
-   
-             ' Percentage of the progressbar to fill. 
-             Dim FillPercent As Integer = CInt(((Percent) / 100) * (e.Bounds.Width - 2)) 
-   
-             ' This creates a nice color gradient to fill. 
-             Dim brGradient As Brush = _ 
-                 New System.Drawing.Drawing2D.LinearGradientBrush(New Rectangle(e.Bounds.X, e.Bounds.Y, e.Bounds.Width, e.Bounds.Height), _ 
-                                                                  ProgressBar_FillColor1, ProgressBar_FillColor2, 270, True) 
-             ' Draw the actual progressbar. 
-             e.Graphics.FillRectangle(brGradient, _ 
-                                      e.Bounds.X + 1, e.Bounds.Y + 2, _ 
-                                      FillPercent, e.Bounds.Height - 3) 
-   
-             ' Draw the percentage number and percent sign. 
-             ' NOTE: make sure that e.SubItem.Text only contains a number or an error will occur. 
-             e.Graphics.DrawString(Percent.ToString("n" & Percent_DecimalFactor) & Percent_Text, _ 
-                                   Percent_Font, Percent_Forecolor, _ 
-                                   CSng(e.Bounds.X + (e.Bounds.Width / 2)), e.Bounds.Y + 3, _ 
-                                   sf) 
-   
-             ' Draw a light gray rectangle/border around the progressbar. 
-             e.Graphics.DrawRectangle(ProgressBar_BorderColor, _ 
-                                      e.Bounds.X, e.Bounds.Y + 1, _ 
-                                      e.Bounds.Width - 1, e.Bounds.Height - 2) 
-         Else 
-             e.DrawDefault = True 
-   
-         End If 
-   
-     End Sub 
-   
- #End Region