I agree. Checking a specific location of the bike to determine what side its on probably won't work unless you move it in set increments.
Using the .IntersectsWith() is probably the best to determine that there is a collision. To determine which direction is blocked, you can just check what direction the user was moving.
If the user can only move in one direction at a time, then just check which direction is true... it doesn't look like you are doing it that way.
You might consider doing the left/right movements, then checking for collision.
Then, doing the up/down movements and then checking for collision.
Your program should not have to move the object left and then right in the same cycle. (Recommend using an If Direction = 2 Then... ElseIf Direction = 3 Then ... End If)
So, now, if you do this, perform the collision check (intersectswith())
if it's true, Direction = 2 means the collision occurs while moving left (so the object was hit on the right side). Direction = 3 means the object was hit on the left side.
Now, do the vertical movements and use intersectswith() again. Direction = 1 means the object was hit on the bottom because the bike was moving towards the top. Etc. :)