You're missing an important step of the process!
In order to assign an image to an object you need to work out how it will be mapped to the object. This is where UV mapping comes in.
If you're using the latest stable version of Blender with the default layout then there should be a specific setup for UV mapping. If not, it's easy to create - you'll need a 3D window and a UV/image editor, preferably side-by-side.
Select a face on your object in edit mode, then press [u]>[unwrap] to unwrap the selected face. Now when you look at the UV/image editor, you should notice that you get a 2D view of the selected face.
In the UV/image editor footer you should see an option to [browse image to be linked] or [create new image], like this:
If you've already loaded an image as an existing texture then you can load that into the UV/image editor using the first option. If you want to try your hand at painting the texture yourself then use [create new image].
Judging by your post you've already loaded an image in so choose the first option. Now you should see that image (probably tiled, back to front and upside down) on the 3d editor. If you don't, make sure that you have at least texture, material or rendered preview enabled in the 3D header.
In order to solve the flipping/rotation issues, you'll need to move around the points in the UV editor. To do this, you can use the normal 3D view controls to Grab and Scale the UV points in order to make the image fit better. You can also use the [UV] options menu on the footer to perform advanced functions like mirroring, stitching etc.
As long as you keep checking the 3D viewport to see your progress, I would use trial and error until it looks right. Now all you have to do is link your material containing the UV mapped texture to your object, set the mapping to UV and you should be good to go!