How do i set the layer for each picture(tilemap/sprite) and BGBit8Top:Plot()/Line()?
BGBit8Top:Plot() is always under the pictures, but i want it above

Try changing the parameter order in your Screen.Initialize() function call.
i have a picture. its 256x147px.
if i load it, its totally messed up. why? i think its because of the x px tiles:
BGBottomMap:LoadMap( "image.map", ( 256 / 8 ), ( 147 / 8 ) )
how can i fix it, without changing the picturesize?
147 is not divisible by 8. I am guessing gfx2gba added some extra lines for you in order to give you the proper tiles/map. Try
BGBottomMap:LoadMap( "image.map", ( 256 / 8 ), ( 144 / 8 ) )
or
BGBottomMap:LoadMap( "image.map", ( 256 / 8 ), ( 152 / 8 ) )
And see if they work better.
Waruwaru