Keep your 'object' layer and background layer separated.
( I'm not talking about just the background layer, but the layer that creates the background for the 'object' )
After resizing is done you can merge it all you want.
If it is in the same layer as the background color, they will have blending party which creates little baby pixels that are tad different than their dull parent...
Because there's couple different things you can do, I decided to add this in this answer.
So possible solutions for avoiding this when resizing your image.
Use Image Resize to scale your image. ( Absolutely best way to scale your Layer Styles )
Image > Image Resize.. ( Ctrl+Alt+I )
This way you dont have to flatter everything to retain the size of your beloved Layer Styles
Note the checkboxs with Scale styles? It scales Layer styles accordingly.
You can Rasterize the effects to the layers.. You can either right click the Effects or the FX icon in the layer panel and choose Create Layers.. from the list.
And another thing is something I use a lot, but first select every layer except background layer ( this asuming that background layer is the only layer that gives bg to the elements. )
You can select all the layers with ( Ctrl+Alt+A ), this will leave Background layer unselected ( though if you've made it into a layer then just drop that off by clicking it while pressing Ctrl )
Then group all the layers ( Ctrl+G ) and then merge them all together ( Ctrl+E )
Then you might want to group and merge background layer on its own and resize.
After resizing with, say Free transform, you can use Scale Layer Effects by first selecting the layer for which you want to do this and then going to Layer > Layer Style > Scale Layer Effects ( Or right clicking the Effects or the FX icon in the layer panel and choosing it from the list. )
Downside, you pretty much in this case have to know the scaling % to be able to scale it to the exact size and this can be done to one layer at a time.