Once we see that these Mobius ribbons always have a regular polygon in the middle the rest is practically finding a nice curve over each edge such that it blends with the next edge nicely (see the hexagon in the middle).
\documentclass[tikz]{standalone}
\usetikzlibrary{shapes.geometric}
\tikzset{my polygon/.style={regular polygon,regular polygon sides=#1,minimum size=4cm}}
\begin{document}
\begin{tikzpicture}[top color=black!50!blue,bottom color=blue]
\node[my polygon=6] (a){};
\foreach \x[remember=\x as \xp (initially 6)] in {1,...,6}{ % use `in {1}` to see the edge
\fill[shade,shading angle={60*(\x+2)}] (a.corner \xp)
..controls ++(60*\x:2cm) ..
([shift={({60*(\x+1)+6}:1.5cm)}]a.corner \x)
-- (a.corner \x);% Come back such that shading doesn't leak
}
\end{tikzpicture}
\end{document}

When we remove the fill, all my lies reveal themselves and we need further tweaks(I've also forgot the outer sep=0 before). Because we have to know the tangent point on the next bezier curve. I don't see any immediate fix for that since we are trying to blend in to a curve that is not drawn yet. Hence this :
\documentclass[tikz]{standalone}
\usetikzlibrary{shapes.geometric,calc}
\tikzset{my polygon/.style={regular polygon,regular polygon sides=#1,minimum size=4cm}}
\begin{document}
\begin{tikzpicture}
\node[my polygon=6,draw,outer sep=0] (a){};
\foreach \x[remember=\x as \xp (initially 6)] in {1,...,6}{
\draw[] (a.corner \xp)
..controls ++(60*\x:2cm) ..
([shift={({60*(\x+1)+7.35}:1.55cm)}]a.corner \x); % This part needs tweaking for a
% nice blend (or a derivative I think).
}
\end{tikzpicture}
\end{document}

+3 for do-this-for-me and almost no research effortfor the sake of accuracy? – cfr Apr 01 '15 at 00:19