Looping through all the pixels in a picture box will be slow.
However I made a few changes to the code that makes it slighter faster.
I simply added more variables so you don't read property values more then once.
Checking the property value of an object is slower then using a variable.
You're also loop to picSrc.ScaleWidth and picSrc.ScaleHeight but it should be one less since the first pixel is at position 0,0 and not 1,1.
VB Code:
  1. Private Sub cmdStart_Click()
  2.     Dim x As Long, y As Long
  3.     Dim startTime As Long
  4.     Dim lngColor As Long
  5.     Dim nSW As Long, nSH As Long
  6.     Dim hSrcDC As Long, hDestDC As Long
  7.    
  8.     Dim blnRefresh As Boolean
  9.     picDest.Cls
  10.     hSrcDC = picSrc.hdc
  11.     hDestDC = picDest.hdc
  12.     blnRefresh = (chkRefresh.Value = vbChecked)
  13.     nSW = picSrc.ScaleWidth - 1 'don't loop longer then necassary
  14.     nSH = picSrc.ScaleHeight - 1
  15.     lblStatus.Caption = "Processing..."
  16.     lblStatus.Refresh
  17.     startTime = GetTickCount()
  18.     For x = 0 To nSW
  19.         For y = 0 To nSH
  20.             lngColor = GetPixel(hSrcDC, x, y)
  21.             SetPixel hDestDC, x, y, lngColor
  22.         Next y
  23.                
  24.         If blnRefresh = True And x Mod 5 = 0 Then
  25.             picDest.Refresh
  26.         End If
  27.     Next x
  28.  
  29.     lblStatus.Caption = "Done in " & (GetTickCount() - startTime) / 1000 & " seconds"
  30.     picDest.Refresh
  31. End Sub
Best regards