Billboarding is where you have an object that always faces the camera - this is very useful for special effects and other stuff. The most challenging part is getting the billboard to face the way you want it to face. First, let's set up the other things that we'll need for the billboard. We need a vertex buffer for it.
    Dim Billboard As VertexBuffer
The vertex buffer must be initialized:
            Billboard = New VertexBuffer(GetType(CustomVertex.PositionColoredTextured), 4, D9, Usage.WriteOnly, CustomVertex.PositionColoredTextured.Format, Pool.Managed)
The actual drawing of the billboard is simply this (with a matrix transformation that is not required, but makes the vertex points easier to place).
        '*************************** Drawing Bit Billboard ****************************************
        SetupBillboard(Billboard, D9)
        D9.Transform.World = Mx
        D9.Material = Luminous
        D9.SetStreamSource(0, Billboard, 0)
        D9.VertexFormat = CustomVertex.PositionColoredTextured.Format
        D9.SetTexture(0, Bitmech)
        D9.DrawPrimitives(PrimitiveType.TriangleStrip, 0, 2)
        D9.Transform.World = Matrix.Identity
The texture for the picture on the billboard:
        Bitmech = TextureLoader.FromFile(D9, Application.StartupPath & "\bit.bmp", 32, 32, 0, 0, Format.A8B8G8R8, Pool.Managed, Filter.Linear, Filter.Linear, &HFF00FF00)
Luminous is just a material that emits its own light.
        Luminous = Wallpaper
        Luminous.Emissive = Color.LightGoldenrodYellow
This function will help us find the distance that the billboard is away from us.
    Public Function GetDistance(ByVal V1 As Vector3, ByVal V2 As Vector3) As Single
        Return Vector3.Subtract(V2, V1).Length
    End Function
The way to do the billboarding is like this:
    Private Sub SetupBillboard(ByVal vxbf As VertexBuffer, ByVal D9 As Device)
        Dim vs() As CustomVertex.PositionColoredTextured
        Dim N As Single = 3.0F
        Dim A As Array = vxbf.Lock(0, LockFlags.None)
        Const BBX As Single = 40.0F, BBY As Single = 40.0F, BBZ As Single = 3.0F
        'It returns a vanilla array...
        vs = DirectCast(A, CustomVertex.PositionColoredTextured())

        vs(0) = New CustomVertex.PositionColoredTextured(0.0F, -N, 2.0F * N, &HFFFFFFFF, 0.0F, 0.0F)
        vs(1) = New CustomVertex.PositionColoredTextured(0.0F, N, 2.0F * N, &HFFFFFFFF, 1.0F, 0.0F)
        vs(2) = New CustomVertex.PositionColoredTextured(0.0F, -N, 0.0F, &HFFFFFFFF, 0.0F, 1.0F)
        vs(3) = New CustomVertex.PositionColoredTextured(0.0F, N, 0.0F, &HFFFFFFFF, 1.0F, 1.0F)

        Mx = Matrix.Identity
        Mx.Multiply(Matrix.RotationY(Convert.ToSingle(Math.Asin(BBZ / GetDistance(New Vector3(BBX, BBY, BBZ), Camera)))))
        Mx.Multiply(Matrix.RotationZ(Convert.ToSingle(Math.Atan2(Camera.Y - BBY, Camera.X - BBX))))
        Mx.Multiply(Matrix.Translation(BBX, BBY, BBZ))

    End Sub