I know it is perfectly possible to show the bivariate probability distributions in MMA. But my question is can we show each dimension of distribution in 2D dimension while we are showing the 3D plot? The same as here:

How we can have the 2D histograms in the sides and 3D histogram in between?
ACCEPTED]
You can also try this:
Generate yor data:
data = RandomVariate[\[ScriptD] =
MultinormalDistribution[{0, 0}, {{1, 0.9}, {0.9, 2}}], 10^4];
To improve a little bit the final image, you might want to introduce lighting vectors:
lightSources = {
{"Directional", White,Scaled[{1, 0, 1}]},
{"Directional", White,Scaled[{1, .5, 1}]},
{"Directional", White, Scaled[{.5, 0, 1}]}
};
Create the 3D histogram
G1 = Histogram3D[data, {0.25}, "PDF", ColorFunction -> "Rainbow",
PlotRange -> {{-4, 4}, {-4, 4}, All}, ImageSize -> Medium,
Boxed -> False, Lighting -> lightSources]
Create the individual histograms
G3 = Histogram[Transpose[data][[1]], {-4, 4, .25}, "Probability",
ColorFunction -> Function[{height}, ColorData["Rainbow"][height]],
Axes -> False]
G4 = Histogram[Transpose[data][[2]], {-4, 4, .25}, "Probability",
ColorFunction -> Function[{height}, ColorData["Rainbow"][height]],
Axes -> False]
Show them all together:
G5 = Graphics3D[{EdgeForm[], Texture[G3],
Polygon[{{4, 4, 0}, {-4, 4, 0}, {-4, 4, 0.2}, {4, 4, 0.2}},
VertexTextureCoordinates -> {{0, 0}, {1, 0}, {1, 1}, {0, 1}}]},
Axes -> False, Boxed -> False];
G6 = Graphics3D[{EdgeForm[], Texture[G4],
Polygon[{{-4, 4, 0}, {-4, -4, 0}, {-4, -4, 0.2}, {-4, 4, 0.2}},
VertexTextureCoordinates -> {{0, 0}, {1, 0}, {1, 1}, {0, 1}}]},
Axes -> False, Boxed -> False];
Show[G1, G5, G6]

EDITED
If you want a strict 2D representation of the data you can try this:
DH = DensityHistogram[data, {-4, 4, .25}, ColorFunction -> "Rainbow", Frame -> False];
GraphicsGrid[{{G3,}, {DH, Rotate[G4, -.5 Pi]}}]

Don't do it!
3D plots on a 2D surface are an anti-pattern for data visualization. The perspective mapping taints the free perceptual processing you get from your visual cortex. Angles are no longer what they seem. The 3D histogram makes things even worse by the way foreground bars obscure other bars -- not only is the data poorly represented: some of it is invisible!
For example, @RodLm's answer shows exactly what you asked for, but can you tell the 3D histogram distribution represents an ellipse?
A couple links on 3D chart junk angle, infovis-wiki [1] peltiertech [2], and a 2D pic (not from Mathematica).

CountourPlot[] of your data... You could also use Plot3D[PDF[\[ScriptD], {x, y}], {x, -4, 4}, {y, -4, 4}] to see the continuous version of the plot... - Rod
I'm going to show method of displaying marginal distributions based on Histogram3D, it has disadvantages, but also a couple of advantages (concise code, tooltip preserved, etc.)
hist[data_, rx_, ry_] :=Show[{
ListPointPlot3D[{##, 0} & @@@ data],
Histogram3D[{#1, ry} & @@@ data, {.2}],
Histogram3D[{-rx, #2} & @@@ data, {.2}, ChartStyle -> Red]},
PlotRange -> {{-rx, rx}, {-7, 7}, All}, AxesEdge -> {{-1, -1}, {1, -1}, {-1, 1}},
FaceGrids -> {{-1, 0, 0}, {0, 0, -1}, {0, 1, 0}},Boxed -> False]
data = RandomVariate[BinormalDistribution[{1, 2}, .8], 10^3];
hist[data, 4, 7]
Update after comments and answers:
The most important thing is xan's answer. I agree with that point but I do not consider Alex's question useless.
The issue discussed in comments was about z-scale. Marginal distributions are 1D while real data distribution is 2D. Integrals/bin counting/counts per bin differ for them. So the question is, what do we want to show.
I could set "Count" for each, z-scale tells the truth but Histogram3D looks a little bit flat:
Histogram/Histogram3D gives us ability to manage bins/values through PureFunctions in place of 2nd and 3rd argument of them (details in Help). We can rescale number of counts:
Histogram3D[data, {.2}, Function[{x, y, z}, t z] (*t is scale factor*)
Caution: z axis now is related to marginal distributions only! What I wanted to show is this functionality.

At the end I decided that if we want to focus on shapes of distributions the best solution is to normalize each distribution at bin with maximum value of counts. It can be easily applied with previous functionality with function:
Function[{x, y, z}, z/Max@z]

One should keep in mind that normalization factor is different for each distribution.
Histogram3D. Marginal distributions fit to it because texture which they are is rescaled to fit the box. Try , Axes -> True in G3 and G4 and see the real values. So the plot looks good at the end but it would be hard to name z-axis related to those histograms. - Kuba
First you determine the binormal distribution of the data:
data = RandomVariate[BinormalDistribution[{1, 0}, {2.5, 5}, 0], 10^4];
dataX = data[[All, 1]];
dataY = data[[All, 2]];
dist = EstimatedDistribution[data,
BinormalDistribution[{Subscript[μ, 1], Subscript[μ,
2]}, {Subscript[σ, 1], Subscript[σ, 2]}, ρ]]
distX = EstimatedDistribution[dataX,
NormalDistribution[μ, σ]]
distY = EstimatedDistribution[dataY,
NormalDistribution[μ, σ]]
Then you draw the plots for $x$ and $y$ distribution and the contour plot:
x = Show[
Histogram[dataX, 20, "PDF", PlotRange -> {{-20, 20}, {-.005, .25}},
Axes -> False, PlotRangePadding -> 0, AspectRatio -> 1/2],
Plot[PDF[distX, x], {x, -20, 20},
PlotStyle -> Directive[{Thick, Blue}]]]
y = Show[
Histogram[dataY, 20, "PDF", PlotRange -> {{-20, 20}, {-.005, .25}},
Axes -> False, PlotRangePadding -> 0, AspectRatio -> 1/2],
Plot[PDF[distY, x], {x, -20, 20},
PlotStyle -> Directive[{Thick, Red}]]]
c = ContourPlot[
PDF[dist, {x, y}] == .00001, {x, -20, 20}, {y, -20, 20},
Epilog -> {PointSize[Small], Point /@ data}, PlotPoints -> 50,
Frame -> False, ContourStyle -> Directive[{Thick, Green}]]
Finally, combine it all together:
pp1 = Graphics3D[{EdgeForm[], Texture[x],
Polygon[{{-20, 20, 0}, {20, 20, 0}, {20, 20, .25}, {-20,
20, .25}},
VertexTextureCoordinates -> {{0, 0}, {1, 0}, {1, 1}, {0, 1}}]}];
pp2 = Graphics3D[{EdgeForm[], Texture[y],
Polygon[{{-20, -20, 0}, {-20, 20, 0}, {-20,
20, .25}, {-20, -20, .25}},
VertexTextureCoordinates -> {{0, 0}, {1, 0}, {1, 1}, {0, 1}}]}];
pp3 = Graphics3D[{EdgeForm[], Texture[c],
Polygon[{{-20, -20, 0}, {20, -20, 0}, {20, 20, 0}, {-20, 20, 0}},
VertexTextureCoordinates -> {{0, 0}, {1, 0}, {1, 1}, {0, 1}}]}];
Graphics3D[{pp1[[1]], pp2[[1]], pp3[[1]]},
Lighting -> {{"Ambient", White}}, BoxRatios -> {1, 1, 1/2},
Boxed -> False, Axes -> True, PlotRangePadding -> 0,
ViewPoint -> {2, -2, 1}, ImageSize -> 600]
The result:

I'm not sure if MMA can do isometric projections.
MarginalDistribution[], among other things... - J. M.'s missing motivationRandomVariate[]to generate random variates from your bivariate distribution, yes, then useHistogram[]on each component of the variates. I'm seeing no 3D histogram, tho; just a point cloud, an enclosing ellipse, and nothing more. - J. M.'s missing motivation