Here's the way I normally do it, but you could wrap it all up into a function or something so you can easier re-use it...

Code:
Dim rScreen As Rect
Dim rSource As Rect
Dim lX As Long
Dim lY As Long

' At initialization, we Set up the screen rectangle
' (also used For BltColorFill To clear the backbuffer)
With rScreen
    .Left = 0
    .Top = 0
    .Right = 640
    .Bottom = 480
End With

' Now when we want To blit, we calculate the X And Y
' values And the source rectangle As normally...
' Just some random values here In this case...
lX = -4
lY = 470

With rSource
    .Left = 0
    .Top = 0
    .Right = .Left + 256
    .Bottom = .Top + 256
End With

' Then, Do some clipping!
If lX < 0 Then
    ' Adjust the rectangle And the X coordinate
    rSource.Left = -lX
    lX = 0
End If

If lY < 0 Then
    ' Adjust the rectangle And the Y coordinate
    rSource.Top = -lY
    lY = 0
End If

If lX > rScreen.Right Then
    ' Adjust the rectangle
    rSource.Right = rScreen.Right - lX
End If

If lY > rScreen.Bottom Then
    ' Adjust the rectangle
    rSource.Bottom = rScreen.Bottom - lY
End If

' Then just blit it As normally, using the X And Y values
' And the rectangle which is modified above...
This is untested btw, so it might have a little error in it...