CJam, 65 63 bytes
q~_,:)_W%\+f{_2*S*a@2$-*\_,f{)'/*\Se[_W%'/'\er+}_W%Wf%+1$++}zN*
Explanation
In this explanation, I will refer to the input number as n
.
q~ e# Read and eval the input (push n to the stack).
_, e# Copy it an get the range [0 .. n-1].
:) e# Increment each element to get [1 .. n].
_W% e# Copy it and reverse it.
\+ e# Prepend the reverse to the original range, resulting in [n n-1 .. 1 1 .. n-1 n].
f{ e# Map over each number x in the range using n as an extra parameter:
_2*S*a e# Push a string containing n*2 spaces, and wrap it in an array.
@2$- e# Push n-x.
* e# Repeat the space string from before n-x times.
\ e# Bring x back to the top.
_, e# Copy it and get the range [0 .. x-1].
f{ e# Map over each number y in this range, using x as an extra parameter:
) e# Increment y.
'/* e# Repeat '/' y times.
\Se[ e# Pad the resulting string to length x by adding spaces to the left.
_W% e# Copy the result and reverse it.
'/'\er e# Replace '/' with '\' in that.
+ e# Concatenate to the other string. This forms one row of one diamond.
} e# (end map, now we have the top half of a diamond of size x)
_W% e# Copy the half-diamond and reverse it.
Wf% e# Reverse each row.
+ e# Concatenate to the top half. Now we have a full diamond of size x.
1$++ e# Put the spaces from before at the beginning and end. This is to pad the top
e# and bottom of the smaller diamonds.
} e# (end map)
z e# Transpose.
N* e# Join with newlines. Implicit output.