Just a little clarification there:
And a short algebra session:

Code:
  This is your character with the current 2D velocity vector shown:

    O  <- character
   /
  /  <- velocity
   
   
    ^   <- Normal of the ground
    |  
____|_____
 GROUND

Note&#58; a normal always points perpendicular to it's surface.

Then you add the velocity vector to the normal vector&#58;
  
  <<===O <- character/object
   |  /
   | /
   |/
 
 To get out a vector of where your object SHOULD go..
 That's this one&#58; <<=====
 
But there is one trick, you must normalise the normal &#58;&#41;
In other words your normal must be of the same length as your velocity.
So first measure the length of the velocity&#58;

Len = sqrt&#40;sqr&#40;Vel.X&#41;+sqr&#40;Vel.Y&#41;&#41;;

Then normalise the normal&#58;
Len2 &#58;= sqrt&#40;sqr&#40;Norm.X&#41;+sqr&#40;Norm.Y&#41;&#41;;

if Len2 <> 0 then
begin
  Norm.X &#58;= Norm.X / Len2;
  Norm.Y &#58;= Norm.Y / Len2;
end;

Now your normal is guaranteed to have a length of exactly 1. No matter where it's 
pointing.

Now just times it by Len to get it the same length as your velocity vector&#58;
Norm.X &#58;= Norm.X * Len;
Norm.Y &#58;= Norm.Y * Len;

Then get the result vector by adding the two&#58;

Result.X &#58;= Norm.X+Vel.X;
Result.Y &#58;= Norm.Y+Vel.Y;
Hope that helps.