This is actually pretty straight forward. Instead of loading up an image from a static path, you would want to store up (the implementation depends on how you store your levels) a path to the correct background for the level along the other level data. As you are loading and creating your game objects, you would load the path to the background image and set that to be rendered behind the other objects. I'll leave the detailed implementation to you, as it is very trivial and depends on the way you store your level data.
In pseudo-code you the implementation would look something like the following. First you would add the background data to the level file. This example adds it to an XML level description file:
<Level>
<Background src="backgrounds/forest.png"/>
<Objects>...</Objects>
</Level>
You would then load the level data as usual, and while doing that, find the background filepath, and load the instead.
for (XmlElement element : elements)
{
if (element.Tag == "Background")
{
backgroundImage = new Image(element.Attributes.get("src"));
}
...
}