Additional to what @reiti.net says:
Use float numbers to define layer depths. Here are some examples:
// 1.
spriteBatch.Begin(SpriteSortMode.BackToFront);
// ↓
spriteBatch.Draw(texture: Pixel, destinationRectangle: new Rectangle(0, 0, 100, 100), color: Color.White, layerDepth: 0.2f);
// ↓
spriteBatch.Draw(texture: Pixel, destinationRectangle: new Rectangle(0, 0, 50, 50), color: Color.Red, layerDepth: 0.1f);
// ↓
spriteBatch.End(); // Red Pixel ontop of White Pixel
// 2.
spriteBatch.Begin(SpriteSortMode.FrontToBack);
// ↑
spriteBatch.Draw(texture: Pixel, destinationRectangle: new Rectangle(0, 0, 100, 100), color: Color.White, layerDepth: 0.2f);
// ↑
spriteBatch.Draw(texture: Pixel, destinationRectangle: new Rectangle(0, 0, 50, 50), color: Color.Red, layerDepth: 0.1f);
// ↑
spriteBatch.End();// White Pixel ontop of Red Pixel
// 3.
spriteBatch.Begin(SpriteSortMode.BackToFront);
// ↓
spriteBatch.Draw(texture: Pixel, destinationRectangle: new Rectangle(0, 0, 100, 100), color: Color.White, layerDepth: 0.1f);
// ↓
spriteBatch.Draw(texture: Pixel, destinationRectangle: new Rectangle(0, 0, 50, 50), color: Color.Red, layerDepth: 0.2f);
// ↓
spriteBatch.End(); // White Pixel ontop of Red Pixel
// 4.
spriteBatch.Begin(SpriteSortMode.FrontToBack);
// ↑
spriteBatch.Draw(texture: Pixel, destinationRectangle: new Rectangle(0, 0, 100, 100), color: Color.White, layerDepth: 0.1f);
// ↑
spriteBatch.Draw(texture: Pixel, destinationRectangle: new Rectangle(0, 0, 50, 50), color: Color.Red, layerDepth: 0.2f);
// ↑
spriteBatch.End();// Red Pixel ontop of White Pixel